本帖最后由 武汉分校-小舞 于 2016-3-16 13:55 编辑
【武汉校区】讲师技术分享:网络编程——TCP/IP的套接字(Socket)进行通信
一、为什么要使用套接字Socket 1、为了能够方便地开发网络应用软件 2、socket的出现,使程序员可以很方便地访问TCP/IP,从而开发各种网络应用的程序。 3、随着Unix的应用推广,套接字在编写网络软件中得到了极大的普及。后来,套接 字又被引进了Windows等操作系统中。Java语言也引入了套接字编程模型。
二、什么是Socket 1、Socket是连接运行在网络上的两个程序间的双向通讯的端点。 2、客户程序根据服务器程序所在的主机名和端口号发出连接请求。客户端套接字的 关键字Socket 3、服务器程序将一个套接字绑定到一个特定的端口,并通过此套接字等待和监听客户 的连接请求。服务器端的套接字的关键字是ServerSocket
三、具体实现 1、客户端代码实现: (1)建立Socket连接 Socket socket=newSocket("192.168.11.102", 9999); 注意:指明服务器端的Ip地址:192.168.11.102 (2)获得输出流 OutputStream outputStream= socket.getOutputStream(); 注意:通过Socket获取输出流,相当于建立一个通道 (3)发送数据 outputStream.write("helloworld".getBytes()); (4)输出流 outputStream.close(); (5)关闭Socket socket.close(); 2、服务器端代码实现: (1)建立Socket连接 ServerSocket serverSocket=newServerSocket(9999); 注意:服务端要指明接收哪个端口号的信息:9999 (2)获得输入 Socket socket=serverSocket.accept(); InputStream inputStream= socket.getInputStream();
注意:1、通过服务器端serverSocket获取客户端的Socket, 并且accept()方法在连接传入之前一直阻塞 2、在通过客户端的socket获取输入流 (3)读数据 byte[] bs=new byte[1024]; int len; while((len=inputStream.read(bs))!=-1){ System.out.println(new String(bs,0,len)); } (4)关闭输入/输出流 inputStream.close(); (5)关闭Socket serverSocket.close();
四、执行和问题
执行:先运行服务器,再运行客户端。之后可以在服务器和客户端的控制台上进 行输入操作,另一端将会收到输入的信息并输出。 问题:以上代码实现了客户端发送,服务的接收。 但是服务器只能接收一个消息,如何接收多个消息呢? 以及服务端如何响应客户端, 因此继续讲解
本帖持续更新,想最快获取最新传智播客武汉讲师分享技术文章请加QQ 1641907557 ,后期会分享更多与实体班同步教程,助你冲击月薪20K!
|