网站定制二次开发,无域名网站 能否被百度,网站设计师网站,专业电商网站建设价格简介
TCP#xff08;传输控制协议#xff09;是一种在计算机网络中常用的协议#xff0c;它提供了可靠的、面向连接的通信#xff08;协议信息链接#xff1a;TCP协议#xff09;。在Java中#xff0c;我们可以使用Socket和ServerSocket类来实现TCP通信。
Java TCP通信…简介
TCP传输控制协议是一种在计算机网络中常用的协议它提供了可靠的、面向连接的通信协议信息链接TCP协议。在Java中我们可以使用Socket和ServerSocket类来实现TCP通信。
Java TCP通信关键方法
客户端套接字(Socket)方法
- Socket(String host, int port)使用指定的主机和端口创建一个客户端套接字。
- Socket(InetAddress address,int port)创建流套接字并将其连接到指定IP指定端口号
- void connect(SocketAddress endpoint)连接到指定的远程套接字地址。
- void setSoTimeout(int timeout)设置套接字的读取超时时间。
- boolean isConnected()检查套接字是否已连接。
- void close()关闭套接字连接。
服务器套接字(ServerSocket)方法
- ServerSocket(int port)创建一个服务器套接字绑定到指定的端口。
- Socket accept()侦听客户端的连接请求并返回与客户端连接的套接字。
- void setSoTimeout(int timeout)设置服务器套接字的超时时间。
- boolean isBound()检查服务器套接字是否已绑定到特定端口。
- void close()关闭服务器套接字。
输入输出流方法数据处理
- InputStream getInputStream()返回与套接字关联的输入流。
- OutputStream getOutputStream()返回与套接字关联的输出流。
- void write(byte[] b)将字节数组中的数据写入输出流。
- int read(byte[] b)从输入流中读取数据并存储到字节数组中。
- void flush()刷新输出流确保数据被发送。
- String readLine()从输入流中读取一行数据。
- void writeBytes(String s)将字符串以字节的形式写入输出流。
- void writeInt(int value)将整数写入输出流。
- int readInt()从输入流中读取整数。
- void writeObject(Object obj)将对象写入输出流。 程序简单设计
客户端设计后启动
public class TCPClient {public static void main(String[] args) throws IOException {//创建嵌套字并连接服务端Socket socketnew Socket(127.0.0.1,10000);//获取嵌套字中的输出流并发送数据OutputStream os socket.getOutputStream();String messagehello tcp server;byte[] datamessage.getBytes();//因为连接已经建立成功直到往该连接(socket)的输出流里面写数据服务端就能收到os.write(data,0,data.length);//获取嵌套字中的输入流处理响应数据InputStream is socket.getInputStream();byte[] buffernew byte[1024];//堵塞当前进程直到IO完成读取数据int lengthis.read(buffer);String responsenew String(buffer,0,length);System.out.println(服务端响应: response);//关闭连接socket.close();}
}
服务端设计先启动
public class TCPServer {public static void main(String[] args) throws IOException {//创建服务端嵌套字并监听指定端口ServerSocket serverSocketnew ServerSocket(10000);System.out.println(服务器已启动等待客户端连接...);//监听客户端的链接(直接堵塞当前进程知道完成与客户端的连接)Socket clientSocket serverSocket.accept();//处理客户端请求System.out.println(客户端已连接);InputStream is clientSocket.getInputStream();byte[] buffernew byte[1024];int lenis.read(buffer);//读取缓存中的数据并返回数据长度String requestnew String(buffer,0,len);System.out.println(客户端请求: request);//发送数据到客户端OutputStream os clientSocket.getOutputStream();String messageHello tcp Client;byte[] data message.getBytes();os.write(data,0,data.length);//关闭连接clientSocket.close();serverSocket.close();}
}