社区
网络及通讯开发
帖子详情
如何得到多用户socket连接时,某个用户所处的连接号
编译失败
2003-03-01 11:51:11
如何得到多用户socket连接时,某个用户所处的连接号,
如网吧里的多用户,a,b,c三台电脑连接服务器,顺序不固定,我要向b机发包,但不知道b机处于第几个连接
Socket->Connections[i]->SendText(XXX);
如何确定i?
...全文
74
10
打赏
收藏
如何得到多用户socket连接时,某个用户所处的连接号
如何得到多用户socket连接时,某个用户所处的连接号, 如网吧里的多用户,a,b,c三台电脑连接服务器,顺序不固定,我要向b机发包,但不知道b机处于第几个连接 Socket->Connections[i]->SendText(XXX); 如何确定i?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
apollonew
2003-03-12
打赏
举报
回复
那你就对它做一个指针~~
然后就直接发啊
编译失败
2003-03-05
打赏
举报
回复
我覺得 apollonew(阿波罗) 的方法在有些地方不妥,只适用于小的网絡,.
這本是一個公安廳用于管理全省网吧用戶的軟件,必須通過INTERNET,而且同時的連接有好几万,
那這個循環要到什么時候?
sam200401
2003-03-05
打赏
举报
回复
楼主你应将用户的连接相关资料存入一个ListBox里.要向谁发送就在ListBox中读取.这是最好的方法.
例程:
void __fastcall TForm1::ServerSocket1ClientConnect(TObject *Sender,
TCustomWinSocket *Socket)
{
Socket->Data =0;
AddConnection(Socket);
}
//---------------------------------------------------------------------------
void TForm1::AddConnection(TCustomWinSocket *ClientSocket)
{
AnsiString UserNickName="Unknown";
TListItem *TempItem=ListView1->Items->Add();
TempItem->Caption =UserNickName;
TDateTime CurrentDT(TDateTime::CurrentDateTime());
TempItem->SubItems->Add(ClientSocket->RemoteHost);
TempItem->SubItems->Add(CurrentDT);
TempItem->Data = ClientSocket;
}
apollonew
2003-03-04
打赏
举报
回复
long UserFlag=Socket->SocketHandle;
这样做!! 你每一个接入的客户端的 handle 不一样的
当然 Client 接入时 就用 Server 向 Client 发一个包让这个 Client 再回复一个
包确认一下。
然后用一个链表来存着这资料
最后你要向不同的客户端发资料时就是
for (int j=0;j<Server->Socket->ActiveConnections;j++)
{
if (Server->Socket->Connections[j]==UserFlag)//是你要发的那个 Client
{
Server->Socket->Connections[j]->SendText("要说的话");
break;
}
}
invalid
2003-03-03
打赏
举报
回复
你要发送的对象的特征是什么,IP,用户名?如果什么都不知道,那就没有办法了。
编译失败
2003-03-03
打赏
举报
回复
這可能是個好辦法,讓我試它一試,謝了,上面這位兄弟.
我以前用的是個苯辦法,就是添加一個Listbox,當產生一個連接后就在Listbox里加上這個連接的IP,那么,我要對哪個連接發包,我只要求 Listbox->Indexof(xxx.xxx.xxx.xxx),因為此時客戶机的 Connections 和它的IP在 Listbox 中的 Index 是相同的,那就可以 Socket->Connections[Listbox->Indexof(xxx)]->SendText(xxx);不過要是有數十万用戶,那Listbox里不知能不能放的下!!!
l_clove
2003-03-03
打赏
举报
回复
在OnAccpet中记录Socket->RemoatAddress或Socket->RemoatHost的信息,
这样就能知道有哪几个客户连到服务器上了
然后循环比较,找出你要的Socket发送数据就行了
cdlcl
2003-03-02
打赏
举报
回复
for (int i=1;i<10;i++)
{
if(Socket->Connections[i]->RemoteHost=="b")
Socket->Connections[i]->SendText(xxx);
}
不知行不?
编译失败
2003-03-01
打赏
举报
回复
可我现在连i都没确定,就是说我并不知道这client处于第几个连接,我只是要发数据,如果我要向所有client发,我可以:
for (int i=1;i<10;i++)
{
Socket->Connections[i]->SendText(xxx);
}
现在我只想向其中一个client发包,而且不知道这个client处于哪个Connections
猎人66
2003-03-01
打赏
举报
回复
用Socket->Connections[i]->RemoteHost或者
Socket->Connections[i]->RemoteAddres来区别吧
TCP的
连接
管理
TCP
连接
的端点又叫套接字(
socket
),根据TCP协议的规定,端口号拼接到IP地址即构成了套接字,即 套接字
socket
= (IP地址:端口号) 这样一来,TCP
连接
可以以下式子表示 TCP
连接
::= {
socket
1,
socket
2} =
socket
粘包,
socket
缓冲区设
这两天看csdn有一些关于
socket
粘包,
socket
缓冲区设置的问题,发现自己不是很清楚,所以查资料了解记录一下: 一 .两个简单概念长
连接
与短
连接
: 1.长
连接
Client方与Server方先建立通讯
连接
,
连接
建立后...
socket
多路复用
socket
多路复用
TCP
连接
TCP
连接
的端点又叫套接字(
socket
),根据TCP协议的规定,端口号拼接到IP地址即构成了套接字,即套接字
socket
= (IP地址:端口号)这样一来,TCP
连接
可以以下式子表示TCP
连接
::= {
socket
1,
socket
2} = {(IP1:...
Linux
Socket
接口使用方法
图1展示了
socket
层
所处
与TCP/IP协议栈之上和应用层之下。
socket
()函数
socket
函数对应于普通文件的打开操作。普通文件的打开操作返回一个文件描述字,而**
socket
()**用于创建一个
socket
描述符(
socket
descriptor...
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章