- 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();
//反复读取客户端发送过来的数据int read = -1;while((read=in.read())!=-1){System.out.print((char)read);}//接收客户端数据以后返回一个o给客户端OutputStream out = socket.getOutputStream();String content = "o";out.write(content.getBytes());//关闭套接字socket.close();//关闭流serverSocket.close();}
}
<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();
}
}
