多个TCPClient如何区分?? 急救

问题描述

大家好,服务器上开一个TCPListener通过多线程和AcceptTCPClient方法,可以建立多个连接,也可以接收多个连接发送过来的数据,但是我如果要向指定的连接发送数据的时候应该怎么做呢?

解决方案

解决方案二:
先顶一下
解决方案三:
Sockets=listener.AcceptSocket();然后可以将这们Socket转交给线程处理,或都者在队列中来处理。
解决方案四:
是啊,但是我现在想要实现向某一个socket发送数据,如何处理呢?
解决方案五:
帖一点代码吧,我原来做的一个通讯项目中的,缩略了些与些无关的内容:while(true){try{Sockets=listener.AcceptSocket();clientsocket=s;clientservice=newThread(newThreadStart(ServiceClient));clientservice.Start();}catch(Exceptione){break;}}privatevoidServiceClient(){Socketclient=clientsocket;stringclientcommand="";while(keepalive){Byte[]buffer=newByte[2048];try{datalen=client.Receive(buffer);}catch{}clientcommand+=System.Text.Encoding.ASCII.GetString(buffer,0,datalen);if(.....){SendToClient(client,refsendBuffer);}}privatevoidSendToClient(Clientclt,stringreturnString){byte[]buffer=newbyte[20];try{buffer=System.Text.Encoding.ASCII.GetBytes(returnString.ToCharArray());client.Send(buffer,buffer.Length,0);}catch(Exception){}}
解决方案六:
每一个连接对应一个连接,要发送数据之类的处理都在特定的处理里做,都是对应着特定的Socket啊。
解决方案七:
我的MSN是:gjq_1@21cn.com
解决方案八:
你这个方法是在获得数据之后,服务器给出回应,发送数据到当前的连接.我想是在任意时刻向指定某台客户端,发送任意数据.也就是说我现在获得10个连接,通过什么办法指定向其中一个连接中发送数据呢?
解决方案九:
使用哈希表。服务器每收到一个客户端连接,就把这个连接存入哈希表。客户端socket对象做值,socket对象的ip和port组合做键,或者你找个别的什么唯一标识做键。这样就可以随时从哈希表中根据键取出值,用这个socket对象值来send数据了。
解决方案十:
谢谢,我看这个方法比较好,希望有更多的方法实现。
解决方案十一:
顶一下,我的方法是Socket和其他必要信息作为一个结构体放在List<>中,需要的时候循环。但是效率不高,正在探索新方法
解决方案十二:
将楼上的List<>改成Direcotry<>就好了!
解决方案十三:
如果那样子,其不是,发送一次数据就要遍历所有的链接,感觉不是很好。另外实时判断某一链接状态如何做呢?即:任意一个链接断开时候报警.....
解决方案十四:
每断开一个连接,服务器端不是要触发一次异常吗,捕捉它,在里面加上从链表删除对应元素的代码,还有别的什么你想加的代码。服务器关闭时也要清空链表。这样就做到实时更新了。

时间: 2024-10-23 05:21:58

多个TCPClient如何区分?? 急救的相关文章

一条微博,可以为需要急救的人“开道”

现实与网络,距离几何? 有时候,很近.一条微博,可以为需要急救的人"开道",几个小时就能为穷困的孩子筹到善款,爱心接力一棒接一棒地传递着正能量. 有时候,又很远.网上可以有掘地三尺的人肉搜索,无凭无据的猜疑指控,花样百出地侮辱诋毁,却不需要有"言责自负"的顾虑. 当网络暴力走向现实,谁能扼住它的脖子? 传统媒体的公信力能起多大作用 今年1月15日,麦田发文质疑韩寒,称其文章很可能由路金波代笔.虽然麦田之后不久即道歉并退出论战,但方舟子接棒质疑,与韩寒展开隔空&quo

发送-delphi tcpserver 和tcpclient之间怎么互相通信

问题描述 delphi tcpserver 和tcpclient之间怎么互相通信 只写出了tcpclient向tcpserver发送消息 ,请大神 指导一下tcpserver 怎么向tcpclient 发送消息 解决方案 从服务器返回数据 如果需要从服务器返回数据的话,只需要在OnAccept中调用ClientSocket.Sendln方法即可.客户端需要做的就是在执行完TcpClient1.Sendln后,直接调用 TcpClient1.Receiveln即可.该方法会等待服务器传回的信息.当

360安全卫士急救盘应该怎么使用

  在使用电脑的时候,很多原因都会造成对系统的破坏,从而使一些重要的文件丢失,那我们又不是专业的维修人员该怎么办呢,小编推荐大家使用360安全卫士急救盘,不需要复杂的操作就能完成对系统的恢复,下面小编给大家详细的介绍一下360安全卫士急救盘应该怎么使用吧,希望对大家能够有所帮助吧. 1.安装制作启动U盘 简单贴心 360急救盘的在线安装包仅有1.82M,下载完成后,插入准备好的U盘打开安装程序,选择要安装的U盘,一路点击"下一步"即可.安装程序会执行文件下载与写入,整个过程大概在5分钟

重载new-宏替换区分new、new(nothrow)和new placement

问题描述 宏替换区分new.new(nothrow)和new placement 目前正在写一个内存泄漏检测的项目,通过重载new和delete的方式实现,重载的new记录了内存申请操作的文件名和行号,重载形式为 operator new(int size ,char*file,int line): 为了使被检测代码使用new的地方调用我们重载版本的new ,需要对被检测的源代码进行宏替换 #define new new(__FILE,__LINE) ; 但是这会引起新的问题,因为有些被检测代码

Excel受损文件急救六招

心.小心.再小心,但还是避免不了ExcelXP文件被损坏,那你是将受损文件弃之不顾呢,还是想办法急救呢?如果属于后一种类型的话,你将从下面的内容中得到惊喜. 1.转换格式法 这种方法就是将受损的ExcelXP工作簿重新保存,并将保存格式选为SYLK格式;一般情况下,大家要是可以打开受损ExcelXP文件,只是不能对文件进行各种编辑和打印操作的话,那么笔者建议大家首先尝试这种方法,来将受损的ExcelXP工作簿转换为SYLK格式来保存,通过这种方法可筛选出文档中的损坏部分. 2.直接修复法 最新版

如何区分处理两个提交按钮

一个FORM表单中有两个SUBMIT按钮(例如"修改""删除"),只有一个ACTION处理页面在此ACTION页面中如何区分是处理"修改"呢还是处理"删除"? 方法1:假如FORM表单是这样的: <INPUT Type="Submit" Name="Action" value="修改"> <INPUT Type="Submit"

JS代码教程:用JS区分用户浏览器

文章简介:JS判断IE,FF等浏览器类型. 第一种,只区分浏览器,不考虑版本function myBrowser(){var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串var isOpera = userAgent.indexOf("Opera") > -1; if (isOpera){return "Opera"}; //判断是否Opera浏览器if (userAgent.indexOf(&qu

使用.NET正则表达式区分中英文

摘要:本文提供一个简单的范例:使用.NET正则表达式实现中英文的区别.具体需求就是把一个字符串中的中英文分开表示. .NET正则表达式:情景描述 这是一个网友的提问,要求如下: 给出一个字符串,如"中国China我爱你I love you",程序可以实现中英文的区别; 识别结果如下:共四个元素 中国 China 我爱你 I love you .NET正则表达式解决代码 这种问题,天生就是给正则表达式准备的,嘿嘿. string ptn = "[\u4e00-\u9fa5]+[

如何区分CSS样式中Display与Visibility

虽然是写了这么久的div+css代码了,但是有些时候在用的某一个css 样式属性的时候也会出错,而且错还出的那么可笑. 虽然是写了这么久的div+css代码了,但是有些时候在用的某一个css 样式属性的时候也会出错,而且错还出的那么可笑,有点小儿科,在这儿我就不揭露我的丑文了.直入重点吧!    今天我要和大家来区分一下:CSS样式属性中Display与Visibility和区别,两者貌似相同,其实质确完全不同. 首先来讲一下visibility: visibility属性用来确定元素是显示还是