热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

WinSocket聊天程序实例(多线程)

1#pragmacomment(lib,Ws2_32.lib)2#include3#include4SOCKETsockSrv;连接所用套节字5SOCKETsockConn;监


1 #pragma comment(lib,"Ws2_32.lib")
2 #include
3 #include
4 SOCKET sockSrv;//连接所用套节字
5 SOCKET sockConn; //监听套接字
6 SOCKADDR_IN addrSrv;
7 DWORD WINAPI funA(LPVOID lp);
8 //定义发送和接收的缓存数组
9 char sendBuf[50];
10 char recvBuf[50];
11
12 void main(){
13 //要求使用的版本
14 WORD wVersionRequested;
15 //
16 WSADATA wsaData;
17 int err;
18
19 wVersiOnRequested= MAKEWORD(1,1);
20 //初始化WinSock dll库 WSAStartup 函数返回0表示初始化成功
21 err = WSAStartup(wVersionRequested,&wsaData);
22 //测试版本获取结果
23 //printf("%d\n",err);
24 if(err!=0){
25 printf("WinSock初始化失败\n");
26 return;
27
28 }
29
30 if(LOBYTE(wsaData.wVersion)!=1||HIBYTE(wsaData.wVersion)!=1){
31 WSACleanup();
32 return;
33 }
34 printf("服务器已启动......\n");
35
36 //创建Socket套接字
37 sockSrv = socket(AF_INET,SOCK_STREAM,0);
38 //通讯的IP地址 htonl把主机字节转换成网络字节
39 addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
40 //使用IP地址族
41 addrSrv.sin_family=AF_INET;
42 //通讯的端口号
43 addrSrv.sin_port=htons(8888);
44 //函数绑定 将套接字与通讯地址建立联系
45 bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
46 //建立监听队列(把套接字转换成监听模式)
47 listen(sockSrv,5);
48 int len=sizeof(SOCKADDR);
49
50 //accept接受客户请求
51 sockCOnn= accept(sockSrv,(SOCKADDR*)&addrSrv,&len);
52
53 sprintf(sendBuf,"服务器IP: %s ;连接成功!",inet_ntoa(addrSrv.sin_addr));
54 //发送消息
55 send(sockConn,sendBuf,strlen(sendBuf)+1,0);
56
57 HANDLE a;
58 DWORD dwT;
59
60 //参数1:使用默认的安全性;参数2:与调用线程一样的栈大小;
61 //参数3:线程入口函数地址;参数4:传递给线程的参数;参数5:线程创建标记;参数6:新线程的ID
62 a=CreateThread(NULL,0,funA,0,0,&dwT);
63 CloseHandle(a);
64
65 //消息循环接收和发送
66 while(1){
67 //从控制台接收用户输入
68 //printf("服务器说:");
69 scanf("%s",sendBuf);
70 //发送消息到客户端
71 send(sockConn,sendBuf,strlen(sendBuf)+1,0);
72 }
73 closesocket(sockConn);
74 //关闭连接和套接字
75 WSACleanup();
76 }
77
78 DWORD WINAPI funA(LPVOID lp)
79 {
80 while(1){
81 //从服务器接收数据显示到控制台
82 if(recv(sockConn,recvBuf,50,0) != -1){
83 printf("客户端说:%s\n",recvBuf);
84 }else{
85 printf("连接已经中断.....请检查客户端是否连接并重试。");
86 system("pause");
87 exit(0);
88 }
89 }
90 return 0;
91 }

WinSocket聊天程序实例(多线程),布布扣,bubuko.com


推荐阅读
  • 本文详细介绍了如何解决DNS服务器配置转发无法解析的问题,包括编辑主配置文件和重启域名服务的具体步骤。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • Framework7:构建跨平台移动应用的高效框架
    Framework7 是一个开源免费的框架,适用于开发混合移动应用(原生与HTML混合)或iOS&Android风格的Web应用。此外,它还可以作为原型开发工具,帮助开发者快速创建应用原型。 ... [详细]
  • String字符串与字符数组#includeStringintmain(){char*strhello;字符串与字符数组的关系:字符串是 ... [详细]
  • importpymysql#一、直接连接mysql数据库'''coonpymysql.connect(host'192.168.*.*',u ... [详细]
  • 本文介绍了如何使用 CMD 批处理脚本进行文件操作,包括将指定目录下的 PHP 文件重命名为 HTML 文件,并将这些文件复制到另一个目录。 ... [详细]
  • 本文详细介绍了DMA控制器如何通过映射表处理来自外设的请求,包括映射表的设计和实现方法。 ... [详细]
  • 检查在所有可能的“?”替换中,给定的二进制字符串中是否出现子字符串“10”带 1 或 0 ... [详细]
  • poj 3352 Road Construction ... [详细]
  • 本文介绍了一种在ANSI C中动态分配二维数组的方法。通过创建指针数组并为每个指针分配连续空间,可以灵活地管理内存。文章还讨论了一些常见的错误和注意事项。 ... [详细]
  • Spark中使用map或flatMap将DataSet[A]转换为DataSet[B]时Schema变为Binary的问题及解决方案
    本文探讨了在使用Spark的map或flatMap算子将一个数据集转换为另一个数据集时,遇到的Schema变为Binary的问题,并提供了详细的解决方案。 ... [详细]
  • 利用REM实现移动端布局的高效适配技巧
    在移动设备上实现高效布局适配时,使用rem单位已成为一种流行且有效的技术。本文将分享过去一年中使用rem进行布局适配的经验和心得。rem作为一种相对单位,能够根据根元素的字体大小动态调整,从而确保不同屏幕尺寸下的布局一致性。通过合理设置根元素的字体大小,开发者可以轻松实现响应式设计,提高用户体验。此外,文章还将探讨一些常见的问题和解决方案,帮助开发者更好地掌握这一技术。 ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • 在使用Eclipse进行调试时,如果遇到未解析的断点(unresolved breakpoint)并显示“未加载符号表,请使用‘file’命令加载目标文件以进行调试”的错误提示,这通常是因为调试器未能正确加载符号表。解决此问题的方法是通过GDB的`file`命令手动加载目标文件,以便调试器能够识别和解析断点。具体操作为在GDB命令行中输入 `(gdb) file `。这一步骤确保了调试环境能够正确访问和解析程序中的符号信息,从而实现有效的调试。 ... [详细]
  • 在 LeetCode 的“有效回文串 II”问题中,给定一个非空字符串 `s`,允许删除最多一个字符。本篇深入解析了如何判断删除一个字符后,字符串是否能成为回文串,并提出了高效的优化算法。通过详细的分析和代码实现,本文提供了多种解决方案,帮助读者更好地理解和应用这一算法。 ... [详细]
author-avatar
mobiledu2502889415
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有