package cn.com; import java.io.InputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; //TCP服务端 //关于TCP的客户端和服务端的比喻(我的理解): //比如在很大的宾馆的前台,有许许许多多电话,这个前台就是一个TCP服务端。 //当有预定房间的电话(客户端)打进来的时候,就会有一个前台的电话与它接通。 //即代码Socket s = ss.accept();返回值是一个Socket()即一个电话。这个时候这两部电话是对等的。 //它们都有自己的getOutputStream和getInputStream。只不过,一边的输出是对应于另一边的输入,反之亦然。 //UDP和TCP的区别: //UDP不需要建立连接,但是TCP要先建立连接再通讯。 //正是这个原因:UDP直接往外面扔数据包,但是TCP在建立连接后,就有流!然后通过流来进行通讯,比如getOutputStream和getInputStream方法。 //这样理解的话就简单多了 public class TCPReceiver { public static void main(String[] args) throws Exception { ServerSocket serverSocket=new ServerSocket(7759); Socket socket=serverSocket.accept(); InputStream is=socket.getInputStream();//利用Socket得到的InputStream得到客户端发来的消息 InetAddress add=socket.getLocalAddress(); byte [] buff=new byte[1024]; int number=is.read(buff); String temp=new String(buff,0,number); System.out.println("InetAddress="+ add.getHostAddress()); OutputStream os=socket.getOutputStream();//利用Socket得到的OutputStream回复客户端 String message="1234567890"; os.write(message.getBytes()); } }