TCP实例 未完待续

来源:互联网 发布:手机远程桌面软件 编辑:程序博客网 时间:2024/05/18 01:04

我们知道TCP传输协议中的基本传输单元是socket,而TCP中的socket分为两种,一种是ServerSocket也就是服务端的套接字,而另一个就是socket这个是客户端的套接字。TCP不同于UDP,在UDP中我们可以说接收端和发送端,两者的顺序可以互换,而在tcp中一定是客户端请求访问服务端才能打开连接。

ok,废话少说,今天的主要目标是带着大家完成一个TCP的一个简单的例子:


没有服务端,就不可能接受客户端的数据,故设计的时候是先设计服务端:

package io.guaju.socket;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;//此类是服务端public class Server {//定义一个监听的方法,这个方法其实就是服务器的逻辑,一直监听有没有客户端接入,并且传递数据public void listen() throws IOException{//①定义一个serversocket用来监听特定端口的信息ServerSocket serverSocket = new ServerSocket(8989);//②定义好服务端socket后,其实服务端就只需等待即可,这个时候服务端的accept方法就是等待的逻辑,这个逻辑是阻塞的Socket accept = serverSocket.accept();//③如果服务端接受到后会拿到一个socket,这个socket其实就是接受到客户端的socket//现在我们来操作这个socketString hostAddress = accept.getInetAddress().getHostAddress();//得到主机地址int port = accept.getPort();//得到客户端的端口号//④下方最重要的是得到数据,注意TCP中的传输核心上是通过流来传输的InputStream inputStream = accept.getInputStream();//得到来自客户端的输入流//读取流,并且打印StringBuffer sb=new StringBuffer();int temp=0;byte[] buf=new byte[1024];while ((temp=inputStream.read(buf))!=-1) {sb.append(new String(buf,0,temp));}System.out.println("接受到的数据是"+sb);OutputStream outputStream = accept.getOutputStream();//这个outputstream 就是客户端的输出流//⑤我们可以操作这个输出流,来写入东西。outputStream.write("欢迎你来我这玩".getBytes());System.out.println("现在结束回话");//释放资源outputStream.close();inputStream.close();serverSocket.close();}}




1 0
原创粉丝点击