工具:IDEA2020
jdk 1.8
本文实现基于Socket类、ServerSocker类的TCP网络通信编程。
本文源代码下载: tcpServer.zip链接:https://pan.baidu.com/s/1d_RoBNpvPZ0l0-dGxp1raw?pwd=ognw
0.Socker类与ServerSocker类
(1)客户端
Socket类构造方法如下:
Socket(String host,int port) 创建流套接字并将其连接到指定主机上的指定接口
Socket(InetAddress address,int port) 创建流套字并将其连接到指定IP地址的指定端口
Socket类常用方法如下:
getInetAddress() 返回与此Socket对象关联的InetAddress
getInputStream() 返回与此Socket对象关联的InputStream
getOutStream() 返回与此Socket对象关联的OutputStream
(2)服务端
ServerSocket类构造方法如下:
ServerSocket() 无参构造方法,创建未绑定的服务器套接字
ServerSocket(int port) 有参构造方法,创建绑定到指定端口的服务器套接字
ServerSocket类常用方法如下:
accept() 监听要连接到此服务器套接字的客户端的Socket并接受它
getInetAddress() 返回此服务器套接字的本地地址
getLocalPort() 返回此服务器套接字正在监听的端口
setSoTimeout(int timeout) 设置带有指定超时时间。对accept()的调用将启用超时时间
一、创建TCP服务端
打开IDEA,点击File—>New—>Project
下面这里选择Java,然后右侧选择SDK版本,这里选择1.8版本
下一步输入Project name,这里 项目名称为 tcpServer,右下角选择“Finish”
创建的类名为TcpServer
参考代码如下:
import com.sun.corba.se.spi.orbutil.fsm.Input;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class TcpServer {
public static void main(String[] args) throws IOException {
int port = 8888; // 服务端监听的端口号
//创建服务端ServerSocket的对象并绑定指定端口
ServerSocket serverSocket =new ServerSocket(port);
//调用accept()方法,进行监听,接受客户端的连接请求
Socket clientSocket = serverSocket.accept();
System.out.println("客户端已连接: " + clientSocket.getInetAddress());
InputStream is = clientSocket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader bufferedReader = new BufferedReader(isr);
//循环读取数据
String str =bufferedReader.readLine();
//输出
System.out.println(str);
//关闭流和socket
bufferedReader.close();
clientSocket.close();
}
}
用网络调试工具,模拟客户端向服务端发送信息,效果如下:
网络工具下载: https://pan.baidu.com/s/1eZtsINTOdU6v8S8NVeD6rA?pwd=ha4g
网络工具的使用方式,下载后解压,运行SocketTCPUDP.exe

先点击“TCP Client”,再点击“创建”
这里的IP因为是本地测试,IP就填写127.0.0.1,端口号填写8888,对应上面代码中的8888,然后点击确定
点击"链接",下面的“数据发送窗口”里面填写一些数字,然后点击”发送数据“,然后点击”断开“
实现过程如下:






