黑马程序员技术交流社区
标题: 【武汉校区】讲师技术分享:网络编程——TCP/IP的套接字... [打印本页]
作者: 武汉分校-小舞 时间: 2016-3-16 13:52
标题: 【武汉校区】讲师技术分享:网络编程——TCP/IP的套接字...
本帖最后由 武汉分校-小舞 于 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!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |