服务端为什么监听不到客户端2

问题描述

usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Net;usingSystem.Net.Sockets;usingSystem.Text;usingSystem.Threading;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;namespacedemoconnect{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidForm1_Load(objectsender,EventArgse){//创建监听的SocketSocketsocketWatch=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);IPAddressip=IPAddress.Any;IPEndPointpoint=newIPEndPoint(ip,5000);//绑定监听socketWatch.Bind(point);socketWatch.Listen(10);//开启一个线程不断监听客户端连接以及发来的消息Threadth=newThread(Cnt);th.IsBackground=true;th.Start(socketWatch);}//客户端连接SocketsocketSend;voidCnt(objecto){SocketsocketWatch=oasSocket;while(true){try{socketSend=socketWatch.Accept();//开启线程不断接收客户端发来的消息Threadth=newThread(GetMsg);th.IsBackground=true;th.Start(socketSend);}catch{}}}//新建一个Socket来存放客户端2的ip和端口Socketsend2=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);//接收客户端消息voidGetMsg(objecto){Socketsend=oasSocket;while(true){try{//客户端连接成功后,服务器应该接受客户端发来的消息byte[]buffer=newbyte[1024*1024*2];//实际接受到的有效字节数intr=socketSend.Receive(buffer);IPAddressip=IPAddress.Parse("192.168.1.103");IPEndPointpoint=newIPEndPoint(ip,5000);send2.Bind(point);//发送方与接收方的握手连接??//------------------------send2.Send(buffer);}catch{}}}}}send2绑定的那个客户2的IP和端口号后,没有与服务器握手,然后就发送消息会报这个错。所以缺少一个握手的环节,但是这里写connect服务器是不行的所以就不知道该放在哪里

解决方案

解决方案二:
不需要在服务器端创建send2当客户端2连接服务器时,socketWatch.Accept()会再分配一个socket给客户端2的你要定义一个list<socket>,将Cnt方法里建立的socketadd到list中,然后对list中的socket线程判断Available
解决方案三:
调试下,看看是不是没有收到消息

时间: 2024-08-30 14:29:57

服务端为什么监听不到客户端2的相关文章

ORACLE本地数据可正常导入 LSNRCTL能够启动 port服务未能正常监听

系统环境:REDHAT LINUX5.4 + ORACLE10.2.0.4,是通过虚拟机复制另外一台数据库系统环境后安装 ORACLE获得. 故障现象:ORACLE安装正常,本地服务正常,本地数据通过IMP可以正常导入,但是LSNRCTL 能够启动,但我们要的port服务未能正常监听. [oracle@L-DB-100-27 ~]$ lsnrctl start LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 24-8月 -2012 10

android-ServerSocket服务端如何向多个Socket客户端发送同一个数据?

问题描述 ServerSocket服务端如何向多个Socket客户端发送同一个数据? 利用线程是多个Socket客户端连接到ServerSocket服务端,但是怎么让ServerSocket服务端向所有的客户端发送同一个数据? 解决方案 你可以发送广播信息(udp),或者你通过服务器拿到所有的客户端的IP地址,然后循环发送同一个数据.(我是学java的,不知道对你有帮助没?)

Android编程之利用服务实现电话监听的方法_Android

本文实例讲述了Android编程之利用服务实现电话监听的方法.分享给大家供大家参考,具体如下: 1. 启动模拟器,部署应用 2. 利用模拟器控制器发送短信启动服务(查看日志输出判断是否成功) 3. 向模拟器拨打电话,并接听,挂断电话后,利用文件管理查看对应的cache目录或者sdcard中生成了3gp文件,并将其复制到pc中播放以验证. 清单设置(一个receiver,一个service,若干权限) <uses-permission android:name="android.permis

socket通信-Socket通信 服务端还没有write完,客户端开始读取数据

问题描述 Socket通信 服务端还没有write完,客户端开始读取数据 Socket通信 服务端还没有write完,客户端开始读取数据,出现数据不完整的现象,如何保证客户端读取的数据完整性,切服务端发送一条客户端可以读取一条 解决方案 tcp连接等.

接口-服务端如何确保请求来自对应的客户端?

问题描述 服务端如何确保请求来自对应的客户端? 我是服务端,现在我需要知道哪些请求是从我们的客户端过来的,哪些是非法的 之前考虑过在请求接口里面加签名摘要之类的,但是android会被解压能看到对应的加密算法,所以这种就被pass掉了,请问下大家还有什么比较好的方式,能够快速的识别某个请求就是从我对应的客户端过来.谢谢! 解决方案 Android代码是可以混淆,加密甚至不能被反编译的,总之你就是要传递一个信息,告诉服务器是你给他的 解决方案二: 你可以混淆啊,混淆后就不那么容易被破解了,或者你使

ftp服务器-FileZila服务端没看到任何信息,客户端就是登不上,求解

问题描述 FileZila服务端没看到任何信息,客户端就是登不上,求解 状态: 连接建立,等待欢迎消息... 状态: 不安全的服务器,不支持 FTP over TLS. 命令: USER tttt 响应: 331 User tttt, password please 命令: PASS **** 响应: 530 Not logged in. Username/password incorrect, user disabled, or user logged in too many times 错误

Android编程之利用服务实现电话监听的方法

本文实例讲述了Android编程之利用服务实现电话监听的方法.分享给大家供大家参考,具体如下: 1. 启动模拟器,部署应用 2. 利用模拟器控制器发送短信启动服务(查看日志输出判断是否成功) 3. 向模拟器拨打电话,并接听,挂断电话后,利用文件管理查看对应的cache目录或者sdcard中生成了3gp文件,并将其复制到pc中播放以验证. 清单设置(一个receiver,一个service,若干权限) <uses-permission android:name="android.permis

java写的服务端和c语言写的客户端的socket通信问题

问题描述 近遇到一个问题,同学用java语言写了一个服务端,我这边用c语言写了一个客户端,服务端先启动后客户端启动,连接成功,然后客户端取出本地的MAC地址传送给服务端,服务端收到后将这个MAC地址作为KEY,把这次的通信通道作为VALUE存入到定义好的一个map中.然后服务端从map中找到这个通道,并使用这个通道给客户端发消息,第一次发送成功.但是第二次想给客户端发送消息时,要根据KEY从map中取通道的时候,取出来的通道却为NULL,这是怎么回事呢???另外,在服务端的机子上,用telnet

服务端采用不同的webservice框架客户端可以通用吗?

问题描述 例如服务端采用CXF,能否使用AXIS的客户端调用CXF服务端上的service?有什么好的方法能解决这个问题吗?还是说一般都是服务端与客户端框架配套? 问题补充:不同的框架生成的wsdl文件格式都是不一样的,所以我想不同框架的客户端在正常方式下应该是不通用的,难道只能去获得XML自己解析吗?如果要自己解析那webservice可一点都不好用... 解决方案 不同的框架只要实现了JAX-WS,就是标准的ws框架了....很巧的是,我正好做了这样的试验,已经验证过了...cxf作为服务器