请问服务器的socket接收该怎么写?

问题描述

比如那些网游,他们服务器需要同时接收很多链接,是用socket写的吗?如果是,那他 的listen监听的连接数肯定远远大于5啊?这是怎么弄的? 问题补充:dwangel 写道

解决方案

我只能 说你看的那个代码 或者 书有问题了。监听只有一个,最多只能说监听端口的接收到的接入链接缓存数有5个。监听到的接入请求,由监听代码负责accept后建立链接,链接跟监听没关系了。
解决方案二:
楼主对socket模型理解有问题。listen只是监听。收到接入请求,accept后才建立连接。 监听跟连接不是一回事。传统的blocking socket在高并发的网络连接环境中 性能不佳。现在主要采用Nonblocking模式编程了。

时间: 2024-10-30 13:41:06

请问服务器的socket接收该怎么写?的相关文章

Socket接收数据包

问题描述 我用socket接收数据,发送端发送了2000个字节的数据包,但是服务器接收数据包的时候接收的是两个被分开的数据包,但是这两个数据包的总和加起来是4973.后来我在大神的指导下,能接受一个完整的数据包,但是接收的这个数据包长度还是4973个.请问这是什么原因?谢谢 解决方案 解决方案二:最好不要发送太大的数据包解决方案三:从你的问题看不出问题出在哪里.你可以在我贴出的一个例子的基础上做扩展和封装.在这个底层没有必要自己写.解决方案四:tcp发送的数据的大小,根据你的业务信令具体的实例而

java socket-我是个新手,请问如何让cilent接收完毕文件后,server停止服务,谢谢

问题描述 我是个新手,请问如何让cilent接收完毕文件后,server停止服务,谢谢 server程序: package com.alex; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Serv

tcp连接-TCP连接时,服务端监听socket接收客户端连接后新创建的socket默认绑定的端口是监听端口吗?

问题描述 TCP连接时,服务端监听socket接收客户端连接后新创建的socket默认绑定的端口是监听端口吗? 比如用来监听连接的socket绑定23端口,服务端每接受一个连接都新开一个线程和客户端通信,并把新socket传递给新线程,是不是所有新创建的socket都是经过23端口和客户端通信? 解决方案 是的,都通过端口23进行通信 解决方案二: 都是监听端口,如果不是客户端就不能将数据发送到服务器 解决方案三: 23只是监听建立连接,后续数据交换走实际上端口

c# socket接收空包的问题

问题描述 c# socket接收空包的问题 我现在遇到一个socket切换通道的一个问题,一共2个socket通道,1个是长连接,另一个是用完后断开在去连接主socket,就是那个长连接的,在回到主通道的时候向服务器发送socket指令的时候收到空包,而服务器回包没有错,我这边就首次回到主通道发送socket指令有问题,后续都正常,求大神赐教这是神马问题.

通信-android 客户端socket连接服务器,socket何时close

问题描述 android 客户端socket连接服务器,socket何时close 假设socket连接好了,现在客户端向服务器发送完了数据,这个时候需要关闭socket吗?如果关闭后,某个时候又需要发送其他数据,再建立连接? 还是说建立通信协议,一次socket连接后一直保持通信状态,根据通信协议对不同的数据进行不同的处理,然后等客户端程序退出时再关闭socket. 解决方案 Android客户端通过Socket连接服务器Android客户端与java服务器端的Socket连接Socket服务

数据接收-C# socket接收单片机数据问题

问题描述 C# socket接收单片机数据问题 单片机通过wifi将采集到传感器的数据传至上位机,单片机是每一秒发送一组数据,如"0xaa,0x55,'采集到的数据1','采集到的数据2'"问:怎样才能接收数据并判断第一个是"0xaa"并且第二位是"0x55"时候将"采集到的数据1"和"采集到的数据2"拿出来并整合合,下一秒也是这样循环下去,我现在只能做到接收数据.private byte[] m_rece

socket接收并显示16进制的数据

问题描述 socket接收并显示16进制的数据 这是编写的客户端代码,接收服务器发送的16进制的数据,但是现实不出来. 解决方案 byte []data=new byte [1024]; int i=0; for(i=0;i<data.length;i++) textbox1.Text+=data[i].ToString("X2");//转成16进制字符串显示 解决方案二: 16进制数据,你需要转换为字符串等才能显示,它本身不一定是可见字符 解决方案三: 一个字节一个字节的读,然

java socket 接收报文重复

问题描述 java socket 接收报文重复 我本地是client端做了一个java socket连接.但是有大部分服务器给我返回的数据是2段重复的数据是什么意思.例如 正常返回ABCD 但是服务器返回的是ABCDABCD服务器端开发说是我本地没有是长连接不是短连接,但是我本地每次请求以后都close啊. 解决方案 代码贴出来代码贴出来 解决方案二: 按你的描述,应该是服务器回复数据代码有问题,数据写入重复了吧.具体什么问题,应该检查下你的代码.

asp.net c#.net Tcp socket 接收数据代码

asp教程.net c#.net tcp socket 接收数据代码  //监听网络          public bool opennet(string sport)        {             processor = new thread(new threadstart(startlistening));//新建监听线程             processor.priority = threadpriority.normal;             processor.