java通过Socket和ServerSocket进行TCP通信
问题:
在运行过程中服务器和客户端没有停止
是因为read方法使用数组读取并没有读取到-1所以被阻塞
服务器端
步骤
TCP服务器端
1 创建一个ServerSocket对象
2 使用ServerSocket对象的accept方法获得客户端socket对象
3 使用socket对象的getInputStream获得输入流
4 使用InputStream对象的read方法获得信息
5 使用socket对象的getOutputStream获得输出流
6 使用getOutputStream对象的write方法回应客户端
7 释放资源
代码
public class TCPServer {
public static void main(String[] args) throws IOException {
ServerSocket server=new ServerSocket(8889);
Socket socket=server.accept();
InputStream is=socket.getInputStream();
byte[] bytes=new byte[1024];
int len=is.read(bytes);
System.out.println(new String(bytes,0,len));
OutputStream os=socket.getOutputStream();
os.write("访问成功".getBytes());
socket.close();
server.close();
}
}
客户端
步骤
TCP客户端
1 创建一个Socket对象
2 使用socket对象的getOutputStream获得输出流
3 使用getOutputStream对象的write方法访问服务器端
4 使用socket对象的getInputStream获得输入流
5 使用InputStream对象的read方法获得信息
6 释放资源
代码
public class TCPClient {
public static void main(String[] args) throws IOException{
Socket socket=new Socket("127.0.0.1",8889);
OutputStream os=socket.getOutputStream();
os.write("请求访问".getBytes());
InputStream is=socket.getInputStream();
byte[] bytes=new byte[1024];
int len=is.read(bytes);
System.out.println(new String(bytes,0,len));
socket.close();
}
}