我搞了一个很简单的聊天室不知道该如何实现用户一对一聊天呢?
使用的API套接字 和异步线程!
不知道该如何才能够做到实现用户一对一的聊天呢?
谢谢说一下下思路即可!
使用的API套接字 和异步线程!
不知道该如何才能够做到实现用户一对一的聊天呢?
谢谢说一下下思路即可!
解决方案 »
- 怎么显示文本
- 创建窗口失败,GetLastError返回值是2090008097是表示什么?
- 在SDI中,如何从 formview向对话框中传递数据
- VC2003/2005快捷键与技巧大全,大家一起来收集
- 我想用标签记录查询到的当前记录号,怎么报错!!!各位解解,
- HTMLVIEW中点击html页上的一个按钮,触发什么事件?对应的处理代码应该写在什么函数中?
- Debug时怎么会出现Disassemdly文件,怎么回事?
- 关于WSASend的问题,求大牛一个能肯定的比较权威的答案
- 救命啊!CFrameWnd
- 请问我想编写一个WINDOWS程序用以捕获所有的键盘按键,不论程序是否拥有当前窗口,谢谢
- 用mysql_real_query写到MYSQL里的数据,中文显示是乱码,求助。。。
- 请教下达人,有没有超级绚丽的界面库。
struct hostent *nlp_host;
int sd;
char host_name[256];
int port;//初始化主机名和端口。主机名可以是IP,也可以是可被解析的名称
strcpy(host_name,"www.linux-wiki.cn");
port=80;//解析域名,如果是IP则不用解析,如果出错,显示错误信息
while ((nlp_host=gethostbyname(host_name))==0){
printf("Resolve Error!\n");
}
//设置pin变量,包括协议、地址、端口等,此段可直接复制到自己的程序中
bzero(&pin,sizeof(pin));
pin.sin_family=AF_INET; //AF_INET表示使用IPv4
pin.sin_addr.s_addr=htonl(INADDR_ANY);
pin.sin_addr.s_addr=((struct in_addr *)(nlp_host->h_addr))->s_addr;
pin.sin_port=htons(port);//建立socket
sd=socket(AF_INET,SOCK_STREAM,0);//建立连接
while (connect(sd,(struct sockaddr*)&pin,sizeof(pin))==-1){
printf("Connect Error!\n");
}服务器端程序
本段是C++代码。 int serverSocket;
struct sockaddr_in serverAddr;
struct sockaddr_in clientAddr;// 用port保存使用的端口
int port=8000;// 建立Socket,并设置
serverSocket = socket(AF_INET, SOCK_STREAM, 0);// 设置socket选项,这是可选的,可以避免服务器程序结束后无法快速重新运行
int val=1;
setsockopt(serverSocket, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val));// 定义端口和监听的地址
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(port);
serverAddr.sin_addr.s_addr = htonl(INADDR_ANY);
memset(&(serverAddr.sin_zero), 0, 8);
int rc = bind(serverSocket, (struct sockaddr*) &serverAddr,
sizeof(struct sockaddr));
if (rc == -1) {
printf("Bad bind\n");
exit(1);
}// 让serverSocket开始监听,客户队列长为5
rc = listen(serverSocket, 5);
if (rc == -1) {
printf("Bad listen\n");
exit(1);
}// 等待客户连接
int sock;
int clientAddrSize = sizeof(struct sockaddr_in);
sock = accept(serverSocket,
(struct sockaddr*) &clientAddr,
(socklen_t*) &clientAddrSize);