Java的Tcp连接

网络通信是必须的一种技术。传输层有两种协议TCP和UDP,前者是可靠的,面向连接的,后者是不可靠的。

Java中两种通信方式都有,我正好看书看到了,就做了Tcp的demo,TCP是需要服务器段和客户端的

一、服务器端

public class Server{

public static void main(args[]){

int count = 0;

ServerSocket ss= new ServerSocket(30000);

       while(count<3){

Socket s = ss.accept();

} System.out,pringln("已经收到3个tcp请求");

}

}

客户端

public class Client{

public static void main(String args[]){

Sorcket s = new Sorcket("127.0.0.1",30000);

}

}

运行服务器端之后在运行客户端,当客户端尝试连接两次之后,服务器端会输出 :已经收到3个tcp请求,然后服务器程序结束结束。

Java中实现TCP连接需要使用java.net.Socket类。TCP连接的建立需要进行三次握手,具体步骤如下: 1.客户端向服务器发送SYN包,其中SYN标志位为1,Seq序号为随机值A。 2.服务器收到SYN包后,向客户端发送SYN ACK包,其中SYN和ACK标志位均为1,Seq序号为随机值B,Ack序号为A+1。 3.客户端收到SYN ACK包后,向服务器发送ACK包,其中ACK标志位为1,Seq序号为A+1,Ack序号为B+1。 完成三次握手后,客户端和服务器之间建立连接,可以进行数据传输。 以下是Java中使用Socket类实现TCP连接的示例代码: ```java import java.net.Socket; import java.io.InputStream; import java.io.OutputStream; public class TCPClient { public static void main(String[] args) throws Exception { // 创建Socket对象,指定服务器地址和端口号 Socket socket = new Socket("127.0.0.1", 8888); // 获取输出流,向服务器发送数据 OutputStream outputStream = socket.getOutputStream(); outputStream.write("Hello, Server!".getBytes()); // 获取输入流,读取服务器返回的数据 InputStream inputStream = socket.getInputStream(); byte[] buffer = new byte[1024]; int len = inputStream.read(buffer); System.out.println(new String(buffer, 0, len)); // 关闭流和Socket inputStream.close(); outputStream.close(); socket.close(); } } ``` ```java import java.net.ServerSocket; import java.net.Socket; import java.io.InputStream; import java.io.OutputStream; public class TCPServer { public static void main(String[] args) throws Exception { // 创建ServerSocket对象,指定监听的端口号 ServerSocket serverSocket = new ServerSocket(8888); // 调用accept()方法监听客户端请求,如果有客户端请求连接,则返回一个Socket对象 Socket socket = serverSocket.accept(); // 获取输入流,读取客户端发送的数据 InputStream inputStream = socket.getInputStream(); byte[] buffer = new byte[1024]; int len = inputStream.read(buffer); System.out.println(new String(buffer, 0, len)); // 获取输出流,向客户端发送数据 OutputStream outputStream = socket.getOutputStream(); outputStream.write("Hello, Client!".getBytes()); // 关闭流和Socket inputStream.close(); outputStream.close(); socket.close(); serverSocket.close(); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值