javatcp发送
‘壹’ java如何通过tcp向指定的IP发送指令并获得返回的包
以下是一个展示java使用tcp通讯的简单例子,包括服务器和客户端代码:
/**
*TCPServer
*/
import java.io.*;
import java.net.*;
class TCPServer{
public static void main(String[] args)throws IOException{
ServerSocket listen = new ServerSocket(5050);
Socket server = listen.accept();
InputStream in = server.getInputStream();
OutputStream out = server.getOutputStream();
char c = (char)in.read();
System.out.println("收到:" + c);
out.write('s');
out.close();
in.close();
server.close();
listen.close();
}
}
/**
*TCPClient
*/
import java.io.*;
import java.net.*;
class TCPClient{
public static void main(String[] args)throws IOException{
Socket client = new Socket("127.0.0.1" , 5050);
InputStream in = client.getInputStream();
OutputStream out = client.getOutputStream();
out.write('c');
char c = (char)in.read();
System.out.println("收到:" + c);
out.close();
in.close();
client.close();
}
}
‘贰’ java如何通过tcp向指定的IP发送指令并获得返回的包
以下是一个展示java使用tcp通讯的简单例子,包括服务器和客户端代码:x0dx0ax0dx0a/**x0dx0a *TCPServerx0dx0a */x0dx0aimport java.io.*;x0dx0aimport java.net.*;x0dx0aclass TCPServer{x0dx0a public static void main(String[] args)throws IOException{x0dx0a ServerSocket listen = new ServerSocket(5050);x0dx0a x0dx0a Socket server = listen.accept();x0dx0a InputStream in = server.getInputStream();x0dx0a OutputStream out = server.getOutputStream();x0dx0a char c = (char)in.read();x0dx0a System.out.println("收到:" + c);x0dx0a out.write('s');x0dx0a x0dx0a out.close();x0dx0a in.close();x0dx0a server.close();x0dx0a listen.close();x0dx0a }x0dx0a}x0dx0ax0dx0a/**x0dx0a *TCPClientx0dx0a */x0dx0aimport java.io.*;x0dx0aimport java.net.*;x0dx0aclass TCPClient{x0dx0a public static void main(String[] args)throws IOException{x0dx0a Socket client = new Socket("127.0.0.1" , 5050);x0dx0a InputStream in = client.getInputStream();x0dx0a OutputStream out = client.getOutputStream();x0dx0a x0dx0a out.write('c');x0dx0a char c = (char)in.read();x0dx0a System.out.println("收到:" + c);x0dx0a out.close();x0dx0a in.close();x0dx0a client.close();x0dx0a }x0dx0a}
‘叁’ java中怎么用tcp/ip将服务器的消息发送给多个用户
在Java中使用TCP/IP将服务器的消息发送给多个用户时,首先你需要通过accept方法获取到一个Socket,这个Socket是连接到客户端的Socket,用于实现两者之间的通信。
为了实现这个功能,我创建了一个ServerThread类,用于处理与每个客户端的交互。在ServerThread类中,我为Socket创建了一个成员变量so,并通过构造函数对其进行初始化。这个类还包含两个方法:send和receive,分别用于发送和接收消息。
为了实现接收消息,我创建了一个内部类Thread,并在其中定义了run方法。这个Thread类继承自Thread,并重写了run方法,以实现接收客户端发送的消息。
接着,我创建了一个ServerThread对象tt,并将其与特定的Socket关联起来。为了能够向每个客户端发送消息,我将ServerThread对象保存在一个集合中。这样,当需要向某个特定客户端发送消息时,可以从集合中取出对应的ServerThread对象,调用其send方法,并将要发送的消息对象作为参数传递。
为了实现发送消息,我需要在send方法中添加逻辑,将消息通过Socket发送给客户端。这个过程涉及到使用OutputStream对象将消息写入Socket的输出流中。
通过这种方式,可以实现服务器向多个客户端发送消息的功能。每个客户端的交互都由一个独立的ServerThread处理,这样可以确保消息发送的可靠性和并发性。
此外,还可以进一步优化这个设计,例如通过多线程处理多个客户端的请求,提高服务器的并发性能。在实际应用中,还需要考虑网络错误处理、超时处理等问题,以确保系统的稳定性和可靠性。
总之,通过这种方式,可以实现Java中使用TCP/IP将服务器的消息发送给多个用户的功能。这为构建高性能的网络应用提供了坚实的基础。
‘肆’ 在Java中实现TCP协议编程中怎么传
在Java中实现TCP协议编程
ServerSocket:编写TCP网络服务程序,首先要用到java.net.ServerSocket类用以创建服务器Socket
构造方法:
ServerSocket(intport):创建绑定到特定端口的服务器套接字
ServerSocket(intport,intbacklog):利用指定的backlog(服务器忙时保持连接请求的等待客户数量),创建服务器套接字并将其绑定到指定的本地端口号。
ServerSocket(intport,intbacklog,InetAddressbindAddr):使用指定的端口、侦听backlog和要绑定到的本地IP地址创建服务器。
Socket:客户端要与服务器建立连接,必须先创建一个Socket对象
常用构造方法
Socket(Stringhost,intport):创建一个流套接字并将其连接到指定主机上的指定端口号。
Socket(InetAddressaddress,intport):创建一个流套接字并将其连接到指定IP地址的指定端口号。
服务器端程序调用ServerSocket类中的accept()方法等待客户端的连接请求,一旦accept()接收了客户端连接请求,该方法返回一个与该客户端建立了专线连接的Socket对象,不用程序去创建这个Socket对象。建立了连接的两个Socket是以IO流的方式进行数据交换的,Java提供了Socket类中的getInputStream()返回Socket的输入流对象,getOutputStream()返回Socket的输出流对象。
TCP服务器与TCP客户端间的数据的接受图示:
用TCP实现服务器与客户端的“聊天”:
实例代码:
客户端:
packagecom.hbsi.net;
importjava.net.Socket;
importjava.io.*;
publicclassTcpClient{
publicstaticvoidmain(String[]args)throwsException{
//1.建立tcp客户端socket,要确定要连接的服务器ip,port
Sockets=newSocket("192.168.49.87",9009);
//获取键盘录入
BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));
//2.通过建立的socket,获取输出流对象
//数据输出给服务器端
OutputStreamout=s.getOutputStream();
BufferedWriterbwout=newBufferedWriter(newOutputStreamWriter(out));
//获取服务器端返回的数据
//读取服务器端发过来的信息InputStreamReader()
BufferedReaderbrin=newBufferedReader(newInputStreamReader(
s.getInputStream()));
Stringline=null;
while((line=br.readLine())!=null){
if(line.equals("over"))
break;
bwout.write(line);
bwout.newLine();
bwout.flush();
Stringstr=brin.readLine();
System.out.println("server:"+str);
}
br.close();
s.close();
}
}
服务器端:
packagecom.hbsi.net;
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.io.OutputStreamWriter;
importjava.net.ServerSocket;
importjava.net.Socket;
publicclassTcpServer{
publicstaticvoidmain(String[]args)throwsException{
//1.建立服务器socket
ServerSocketss=newServerSocket(9009);
//2.调用accept()
Sockets=ss.accept();
System.out.println(s.getInetAddress().getHostAddress()
+"...connection");
//读取客户的信息的输入流
InputStreamin=s.getInputStream();
BufferedReaderbrin=newBufferedReader(newInputStreamReader(in));
//向客户端发送信息输出流,服务端向客户端返回信息OutputStreamWriter()
BufferedWriterbrout=newBufferedWriter(newOutputStreamWriter(
s.getOutputStream())); Stringline=null;
while((line=brin.readLine())!=null){
System.out.println("client:"+line);
brout.write(line.toUpperCase());//服务器端收到信息后,将信息转为大写返回给客户端toUpperCase()
brout.newLine();
brout.flush();
}
s.close();
ss.close();
}
}