//发送端(Client) import java.io.IOException; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; public class TCPClicent { public static void main(String[] args) throws IOException { //TCP发送数据分为以下几步: //1.创建发送端socket对象(创建连接:抑或说是创建码头)并指定IP地址和端口号,这里与UDP创建Socket是可以不指定端口号的情况不同 Socket ss = new Socket(InetAddress.getByName("192.168.0.103"),10086); //2.获取输出流对象,准备开始输出数据; OutputStream os = ss.getOutputStream(); String str = "TCP-TEST"; //3.开始数据发送,数据流是按位输出的 os.write(str.getBytes()); //4.释放资源 ss.close(); } } //接收端 (Server) import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; public class TCPServer { public static void main(String[] args) throws IOException { //TCP接收数据分为以下几步: //1.创建接收端的socket对象,与发送端的Socket类不同这里是ServerSocket类,用于监听 System.out.println("开始监听......"); ServerSocket s = new ServerSocket(10086);//注意,这里监听用的端口号和新建立连接用的端口号将保持一致,不会开新的端口 //开始监听(阻塞),直到某用户的三次握手完毕,建立起了安全可靠可用的连接,再利用一个真正的socket对象将数据接下来。 Socket ss = s.accept(); System.out.println("收到消息,并开始建立连接......"); //获取输入数据流 InputStream is = ss.getInputStream(); //解析获取数据 byte [] buf = new byte[1024]; int len = is.read(buf); //输出数据 System.out.println(new String(buf,0,len)); //释放资源 ss.close(); } }