黑马程序员技术交流社区

标题: 【武汉校区】讲师技术分享:网络编程——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!


推荐阅读:

黑马程序员Android实体班同步项目Demo源码汇总,挑战月薪20K!
《【武汉校区】Java/Android实体班同步笔记+配套面试/项目宝典》






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2