服务端
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 服务端
*/
public class TCPserver {
private static final int PORT=1721;
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(PORT);
Socket socket=serverSocket.accept();//使用TCP进行通信
//InputStream inputStream=new DataInputStream(socket.getInputStream());
//OutputStream outputStream=new DataOutputStream(socket.getOutputStream());
DataInputStream dis = new DataInputStream(socket.getInputStream());
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
System.out.println(dis.readUTF());
dos.writeUTF("我收到了");
dos.close();
dis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
客户端
import java.io.*;
import java.net.Socket;
/**
* 客户端
*/
public class TCPclient {
// 定义本机端口的地址
private static final String HOST="localhost";
private static final int PORT=1721;
public static void main(String[] args) {
try {
Socket socket=new Socket(HOST,PORT);
//OutputStream outputStream = socket.getOutputStream();
//InputStream inputStream = socket.getInputStream();
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
DataInputStream dis = new DataInputStream(socket.getInputStream());
dos.writeUTF("你收到了么");
System.out.println(dis.readUTF());
socket.close();
dos.close();
dis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
代码虽短,但它将Socket基于TCP协议的双向通信直观地体现出来。相比于网上很多使用多线程来实现的,这个则更适合初学者理解TCP协议的双向传递过程。如有不当之处欢迎各位大佬指正。