• TCP协议:
  • 也是一个网络传输的协议,发送端和接收端会建立连接-建立io通道,在这个通道的基础上进行数据的发送和响应
  • 特点:
  • 1.传输稳定,不容易产生丢包
  • 2.效率相对udp要低
  • 服务器端(server)

    Socket客户端和ServerSocket服务器端:
    1.建立客户端和服务器端
    2.建立连接后,通过Socket中的io流(Socket流)进行数据的传输
    (如果是服务器端,则需要添加一步操作,通过Socket服务获取Socket,再获取其中的IO流)
    3.关闭socket。

注意点:

  • 1.服务器端开启后等待客户端访问,可以不关闭
  • 2.一个服务端可以对应多个客户端
  • 3.不同客户端间通信可以通过服务器端中转信息 ```java import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket;

public class ServerTCP { public static void main(String[] args) throws IOException { //建立服务器端 ServerSocket serverSocket = new ServerSocket(8888); //当前是服务器端,所以获取io流的同时需要等到客户端发生数据过来 Socket socket = serverSocket.accept(); //建立连接后,通过socket中的io流,进行数据传输 InputStream in = socket.getInputStream();

  1. //反复读取客户端发送过来的数据
  2. int read = -1;
  3. while((read=in.read())!=-1){
  4. System.out.print((char)read);
  5. }
  6. //接收客户端数据以后返回一个o给客户端
  7. OutputStream out = socket.getOutputStream();
  8. String content = "o";
  9. out.write(content.getBytes());
  10. //关闭套接字
  11. socket.close();
  12. //关闭流
  13. serverSocket.close();
  14. }

}

<a name="9i2r1"></a>
# 客户端(client)
**客户端**<br />**1.建立客户端**<br />**2.连接后,通过socket中的流进行传输**<br />**3.关闭**<br />
```java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class ClientTCP {
    public static void main(String[] args) throws IOException {
        //建立客户端
        Socket socket = new Socket("127.0.0.1",8888);
        //建立连接后开始传输数据
        OutputStream out = socket.getOutputStream();
        //输出数据
        String s = "i love java";
        out.write(s.getBytes());

        //告诉服务器不需要发生数据了
        socket.shutdownOutput();
        //获取服务器端的响应 - o
        InputStream in = socket.getInputStream();
        int read = in.read();
        System.out.println((char)read);

        //关闭
        socket.close();
        //out.close();
    }
}