Socket
目的:用Socket实现在服务端接受客户端发送的信息。
用两个单元测试模拟client和server
客户端
1. 指明服务器端的ip和端口号;创建Socket对象
2. 获取输出流;将数据写出
服务端
1. 创建服务器端的SererSocket类,指明自己的端口号,自己的ip不用指明
2. 调用accept()接受来自客户端的socket,探索:accept()底层实现
3. 通过socket获取输入流
4. 读取输入流中的数据;将数据用过字节数组输出流写出到控制台
具体代码实现如下:
@Test
public void client() throws IOException {
// InetAddress inet = InetAddress.getByName("127.0.0.1");
Socket socket = new Socket("127.0.0.1", 1122);
OutputStream outputStream = socket.getOutputStream();
outputStream.write("hi~~".getBytes());
socket.close();
outputStream.close();
}
@Test
public void server() throws IOException {
ServerSocket serverSocket = new ServerSocket(1122);
Socket socket = serverSocket.accept();
InputStream inputStream = socket.getInputStream();
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len;
while (-1 != (len = inputStream.read(buffer))) {
byteArrayOutputStream.write(buffer,0,len);
}
System.out.println(byteArrayOutputStream.toString());
System.out.println("测试收到来自:"+socket.getInetAddress().getHostAddress()+"连接是否成功"+socket.isConnected());
serverSocket.close();
socket.close();
inputStream.close();
byteArrayOutputStream.close();
}