服务端Socket多线程通信

写在前面的话:整了一个月的团支部评比,中间还要弄智能车锁的项目,真是忙的天昏地暗飞沙走石,时隔一个月来更新一下博客。

智能车锁:做成与ofo一样的共享项目,目前是前期开发阶段,用到一个socket多线程通信的技术,做一下笔记。

一、socket多线程通信概念

现在的网络进程都是通过socket来通信的,socket连接是一种可持续的长连接,不详http协议是请求-响应形式的短连接。多线程通信是为了解决多个客户端设备与一个服务端设备的通信问题,要求每个客户端与服务端的连接不能相互影响,所以需使用多线程实现并发通信。

二、多线程通信步骤(服务端)

  1. 主函数循环等待连接
  2. 接受连接之后开启一个新线程处理服务器与该设备的通信

三、多线程通信代码

public class Main {

    public static void main(String[] args) {
        ServerSocket serverSocket;
        try {
            serverSocket = new ServerSocket(4444);//服务器监听4444端口
            while (true) {
                Socket socket = serverSocket.accept();
                System.out.println("连接成功:" + socket.toString());
                invoke(socket);
            }
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("程序结束");
        }
    }

    private static void invoke(final Socket socket) {
        new Thread(new Runnable() {
            public void run() {
                //处理新连接的代码
            }
        }).start();
    }
}

四、总结

servlet采用的也是多线程并发处理请求,其实多线程并发很简单,就是每一个链接开一个线程即可。

时间: 2024-10-08 02:49:12

服务端Socket多线程通信的相关文章

tcp服务端socket

import socket if __name__ == '__main__': # 创建tcp服务端socket tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 立即释放端口号,重用端口 # SOL_SOCKET: 表示当前socket # SO_REUSEADDR: 是否立即释放端口选项 # True:表示立即释放端口 tcp_server_socket.setsockopt(socket.SOL

.NET服务端开发—多线程使用小结(多线程使用常识)

有一段时间没有更新博客了,最近半年都在着写书<.NET框架设计-大型企业级框架设计艺术>,很高兴这本书将于今年的10月份由图灵出版社出版,有关本书的具体介绍等书要出版的时候我在另写一篇文行做介绍.可以先透露一下,本书是博主多年来对应用框架学习的总结,里面包含了十几个重量级框架模式,这些模式都是我们目前所经常使用到的,对于学习框架和框架开发来说是很好的参考资料,大家敬请期待. 好了,进入文章主题. 最近几个月本人一直从事着SOA服务开发工作,简单点讲就是提供服务接口的:从提供前端接口WEBAPI

C# Socket服务端与客户端通信(包含大文件的断点传输)

步骤: 一.服务端的建立 1.服务端的项目建立以及页面布局 2.各功能按键的事件代码 1)传输类型说明以及全局变量 2)Socket通信服务端具体步骤:   (1)建立一个Socket   (2)接收信息   (3)发送数据(这里分发送字符串.文件(包含大文件).震动) 二.客户端的建立 1.服务端的项目建立以及页面布局 2.各功能按键的事件代码 1)传输类型说明以及全局变量 2)Socket通信服务端具体步骤:   (1)建立一个Socket   (2)接收信息   (3)发送数据(这里分发送

【转】C# client 与java netty 服务端的简单通信,客户端采用Unity

http://blog.csdn.net/wilsonke/article/details/24721057 近日根据官方提供的通信例子自己写了一个关于Unity(C#)和后台通信的类,拿出来和大家分享一下. 具体请参考: 1.java服务端用的apach.mina框架搭建.java服务端请参考:http://blog.9tech.cn/?c=site&m=article&id=548 2.C#环境:.NET framework 2.0 3.C#帮组文档,及Socket注解:http://

python模拟服务端和客户端通信(简单)

写了一个超级简单的,小白可以看一下,因为自己就是小白白(自学的) 客户端: import socket#指定一个协议tcp/ipclient=socket.socket()#连接一个地址(服务端和端口号)client.connect(('localhost',6969))#发送数据(python默认是byte类型,所以数据前面加b)client.send(b"Hello Word")#把服务端反馈的信息进行接收并赋值,给出一个接收的大小(kb/M)之类的date=client.recv

socket 服务端 | socket 客户端 --&gt;黏包现象

# ### 服务端 import socket import time sk = socket.socket() # 在bind方法之前加上这句话,可以让一个端口重复使用 sk.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) # 绑定地址端口(在网络上注册主机) sk.bind( ("127.0.0.1",9000) ) sk.listen() conn,addr = sk.accept() conn.send("6&q

Python socket编程客户端与服务端通信

目标:实现客户端与服务端的socket通信,消息传输. 客户端 客户端代码: from socket import socket,AF_INET,SOCK_STREAM #服务端的ip地址 server_ip = '127.0.0.1' #服务端socket绑定的端口号 server_port = 20000 if __name__ == '__main__': while True: str_msg = input("请输入要发送信息:") if str_msg != "&

使用多线程实现多个客户端与服务端通信1

Server.java package socket; import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.InetAddress;import java.net.ServerSocket;import java.net.Socket; /** * 聊天室服务端 * @author 小

socket 编程中。 服务端用到多线程

客户端连接服务端之后, 服务端会生成与客户端交换信息的socket. 在服务端实现多线程: 为每个连接创建一个线程进行信息交换. import threading from socket import * from time import ctime HOST='127.0.0.1' PORT = 1111 BUFSIZE= 1024 ADDR = (HOST,PORT) tcpSerSock = socket(AF_INET, SOCK_STREAM) tcpSerSock.bind(ADDR