步骤:

  1、服务端创建ServerSocket,循环调用accept()等待客户端连接;

  2、客户端创建socket并请求与服务端对话;

  3、服务端接收客户端的请求,创建socket与客户端进行专线连接;

  4、服务端监测是否接收到消息,长时间没有接收到消息则关闭连接;

  public class ServerSocketThread extends Thread{

  private Socket socket = null;

  public ServerSocketThread (Socket socket){
  this.socket = socket;
  }
  @Override
  public void run(){
    try {
      InputStream inputStream = socket.getInputStream();
      OutputStream outputStream = socket.getOutputStream();
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
      if(bufferedReader.readLine()!=null){
        String read = bufferedReader.readLine();
        System.out.println(read);
        System.out.println(str2HexStr(read));
      }
    /**
    * 关闭输出流
    */
    socket.shutdownOutput();

    /**
    * 关闭相对应的资源
    */
    outputStream.close();
    bufferedReader.close();
    inputStream.close();
    socket.close();
    } catch (IOException e) {
    e.printStackTrace();
    }

  }
}

public class SocketServer {
  public static void main(String[] args) {
    try {
      ServerSocket serverSocket = new ServerSocket(8888);
      Socket socket = null;
      int clientCount = 0;

      while(true){
        socket = serverSocket.accept();
        ServerSocketThread serverSocketThread = new ServerSocketThread(socket);
        serverSocketThread.start();
        clientCount++;
        System.out.println("客户端数量为:"+clientCount);
      }
    } catch (IOException e) {
    e.printStackTrace();
  }
  }
}

socket的多线程实现的更多相关文章

  1. C#socket通信-----多线程

    我在之前的socket通信的基础上做了一点改进,使用多线程来使用,程序更加简洁实用.不足之处请指教哦! 话不多说,之前的随笔也有介绍,直接上代码啦! 服务端socket(serverSocket): ...

  2. Python socket进阶 多线程/进程

    #首先,什么场合下用进程,什么场合下用线程: . 计算密集型的用进程. . IO密集型的用进程. xSocket语法及相关 Socket Families(地址簇) socket.AF_UNIX un ...

  3. Unix/Linux编程实践教程(二:socket、多线程、进程间通信)

    同一接口不同的数据源: 协同进程: fdopen以文件描述符为参数: fopen和popen: 为了实现popen,必须在子进程中调用sh,因为只有shell本身即/bin/sh可以运行任意shell ...

  4. 【C++】基于socket的多线程聊天室(控制台版)

    以前学习socket网络编程和多线程编程的时候写的一个练手程序 聊天室基本功能: 1.用户管理:登录,注册,登出,修改用户名,修改密码 2.聊天室功能:群聊,私聊,获取在线用户列表,获取所有用户列表 ...

  5. java socket 服务器多线程 数据转发的研究实践

    项目中借鉴了以下资料: https://www.cnblogs.com/whenever/p/5526420.html https://www.cnblogs.com/jpwz/p/5715852.h ...

  6. c++下基于windows socket的多线程服务器(基于TCP协议)

    之前用c++实现过基于windows socket的单线程TCP服务器(http://www.cnblogs.com/jzincnblogs/p/5170230.html),今天实现了一个多线程的版本 ...

  7. java 网络编程基础 TCP/IP协议:服务端ServerSocket;客户端Socket; 采用多线程方式处理网络请求

    1.Java中客户端和服务器端通信的简单实例 Java中能接收其他通信实体连接请求的类是ServerSocket,ServerSocket对象用于监听来自客户端的Socket连接,如果没有连接,它将一 ...

  8. day05 Java网络编程socket 与多线程

    java网络编程 java.net.Socket Socket(套接字)封装了TCP协议的通讯细节,是的我们使用它可以与服务端建立网络链接,并通过 它获取两个流(一个输入一个输出),然后使用这两个流的 ...

  9. 基于socket、多线程的客户端服务器端聊天程序

    服务器端: using System; using System.Windows.Forms; using System.Net.Sockets; using System.Net;//IPAddre ...

  10. linux下一对多socket服务器端多线程泄露问题

    线程创建多了,没有释放.导致内存泄露... int main() { int len; int on=1; // pMachList = CreateEmptyLinklist(); DataBase ...

随机推荐

  1. js实现超简单sku组合算法

    let arr = [ [1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], ]; function cartesianProductOf() { return ...

  2. 清理Visual Studio解决方案临时文件:Clean Visual Studio Solution Temporary File Build20160418

    复制保存到任意文件名.bat,放置在Visual Studio Solution目录下. 当Visual Studio Solution目录过于庞大或打算拷贝移动Visual Studio Solut ...

  3. 静态栈-------C语言

    /***************************************************** Author:Simon_Kly Version:0.1 Date: 20170520 D ...

  4. iptables防DDOS攻击和CC攻击配置

    防范DDOS攻击脚本 #防止SYN攻击 轻量级预防 iptables -N syn-flood iptables -A INPUT -p tcp –syn -j syn-flood iptables ...

  5. PAT_A1024#Palindromic Number

    Source: PAT A1024 Palindromic Number (25 分) Description: A number that will be the same when it is w ...

  6. 入门 Webpack,看这篇就够

    写在前面的话 阅读本文之前,先看下面这个webpack的配置文件,如果每一项你都懂,那本文能带给你的收获也许就比较有限,你可以快速浏览或直接跳过:如果你和十天前的我一样,对很多选项存在着疑惑,那花一段 ...

  7. [已解决]报错Could not install packages due to an EnvironmentError

    安装OpenCV过程中出现错误 代码: pip-conda install -i https://pypi.douban.com/simple/ opencv-python 报错内容如下: Could ...

  8. Til the Cows Come Home(spfa做法)

    题目题目描述贝茜在谷仓外的农场上,她想回到谷仓,在第二天早晨农夫约翰叫她起来挤奶之前尽可能多地睡上一觉.由于需要睡个好觉,贝茜必须尽快回到谷仓.农夫约翰的农场上有N(2≤N≤1000)个路标,每一个路 ...

  9. Vue下渐变效果有时候失效

    记录一个问题:我在项目中给按钮设置一个渐变属性,调试的时候有时候有效果,有时候又没有,代码如下: .training-right-bmz { background: -webkit-linear-gr ...

  10. python 对象的删除