如何实现Tcp三次握手以及服务端与客户端之间的信息交流?
直接上代码
服务端代码:
package com.company;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TCPServerSocket {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("等到连接");
Socket accept = serverSocket.accept();
System.out.println("已连接");
// System.out.println(accept.getInetAddress());
// System.out.println(accept.getPort());
InputStream in = accept.getInputStream();
byte[] bytes = new byte[1024];
int len=0;
while ((len=in.read(bytes))!= -1){
//new String()第一个参数传 字节数组,第二参数传 偏移量,第三个参数是读取的长度
//倘若需要把传过来的内容全部读完,第二参数就是0(表示从第一位开始读),第三位必须是一个变量(一个一个的读)
System.out.println(new String(bytes,0,len));
}
/*当没有内容时,new String()会报错
System.out.println(new String(bytes,0,len));*/
accept.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
客户端代码:
package com.company;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
public class TCPClientSocket {
public static void main(String[] args) {
try {
String text="123456xxx654321";
System.out.println("发起连接");
Socket socket = new Socket("127.0.0.1", 8888);
System.out.println("连接成功");
OutputStream out = socket.getOutputStream();
//发送内容
out.write(text.getBytes());
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}