我做了 一个聊天室的程序 分为 客户端和服务器2个程序,我用的是WINSOCK 写的,问下
1。当客户推出时销毁掉 客户这边的SOCKET 服务器的与之通讯的SOCKET 会自动销毁吗~如果不能怎么销毁~~~
2。如何处理 用户上线时在服务器这边保存 客户姓名 (主要是处理的方法 )。
谢谢了
1。当客户推出时销毁掉 客户这边的SOCKET 服务器的与之通讯的SOCKET 会自动销毁吗~如果不能怎么销毁~~~
2。如何处理 用户上线时在服务器这边保存 客户姓名 (主要是处理的方法 )。
谢谢了
应该是产生一个onclose的事件。
连接上的时候就存进去,超时或者断开就从数据结构中删除就可以了。
{
int no;//用户在服务器的编号
CString name; 姓名
SOCKET cs; 与客户通讯的SOCKET
};
来保存~~ 编号是在
case FD_ACCEPT:
cl[i].cs =accept(serve.m_hsocket,NULL,NULL);
cl[i].no=i;
里面直接赋予的 但是怎么做才可以 把姓名也传递过来保存~~
不是特别清楚您的意思,你说的姓名如果是机器名,可以用下边的方法。
int addr=inet_addr(LPCSTR(ipAddress));
HOSTENT* hp=NULL;
hp=gethostbyaddr((char*)&addr,4,AF_INET); if (hp->h_name!="")
{
crp->m_ClientIP = hp->h_name;
}else{
crp->m_ClientIP = ipAddress;
}如果是对应自己编号的名字,那么可以用个简单的map把no和名字对应得到no就有名字了。如果是随便输入的,那么可以在连接后发送自己的名字字符串,自己接受(自己最好定一个简单的协议以免发生错误,把名字当成聊天内容就不好了。)
for( j=0;j<i;j++)
{
if(cl[j].cs==wParam)
{
len=recv(cl[j].cs,s,1024,0);
接收聊天的消息,我想把客户上线时取的名字也传过来保存在服务器里怎么 处理~~~