实例介绍
【实例简介】
一个简单的socket网络编程例子: 服务器代码: #include #include #include #include #pragma comment(lib,"ws2_32.lib") //这句话的意思是加载ws2_32.lib这个静态库 #define NETWORK_EVENT WM_USER+100 //如果你用mfc做开发,你可以点击菜单project-〉setting-〉link-〉object/library中添加这个静态库。 //如果你用c语言,你需要通过#pragma comment(命令来连接静态库 int main(int argc, char* argv[]){ HANDLE hThread = NULL; //判断是否输入了端口号 if(argc!=3){ printf("Usage: %sPortNumber\n",argv[1]); exit(-1); } //把端口号转化成整数 short port; if((port = atoi(argv[2]))==0){ printf("端口号有误!"); exit(-1); } WSADATA wsa; //初始化套接字DLL if(WSAStartup(MAKEWORD(2,2),&wsa)!=0){ //高字节指定了次版本号,低字节指定了主版本号,两个字节加到一起,就是你想要的Winsock库的版本号了 printf("套接字初始化失败!"); exit(-1); } //创建套接字 SOCKET serverSocket; if((serverSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==INVALID_SOCKET){ printf("创建套接字失败!"); exit(-1); } struct sockaddr_in serverAddress; memset(&serverAddress,0,sizeof(sockaddr_in)); serverAddress.sin_family=AF_INET; serverAddress.sin_addr.S_un.S_addr = htonl(INADDR_ANY); serverAddress.sin_port = htons(port); //绑定 if(bind(serverSocket,(sockaddr*)&serverAddress,sizeof(serverAddress))==SOCKET_ERROR){ printf("套接字绑定到端口失败!端口: %d\n",port); exit(-1); } //进入侦听状态 if(listen(serverSocket,SOMAXCONN)==SOCKET_ERROR){ printf("侦听失败!"); exit(-1); } printf("Server %d is listening......\n",port); SOCKET clientSocket[5],maxSocket;//用来和客户端通信的套接字 struct sockaddr_in clientAddress;//用来和客户端通信的套接字地址 memset(&clientAddress,0,sizeof(clientAddress)); int addrlen = sizeof(clientAddress); fd_set fd_read; int i=0; int j; char buf[4096]; char buff[4096]="exit"; while(1) { FD_ZERO(&fd_read); maxSocket=serverSocket; FD_SET(serverSocket,&fd_read); //FD_SET(clientSocket[i-1],&fd_read); for(j=0;j<i;j++) { FD
【实例截图】
【核心代码】
4744302542998547981.rar
└── companywork
├── client
│ ├── client.dsp
│ ├── client.plg
│ └── Debug
│ ├── client.exe
│ ├── client.ilk
│ ├── client.obj
│ ├── client.pch
│ ├── client.pdb
│ ├── vc60.idb
│ └── vc60.pdb
├── client1.cpp
├── client2.cpp
├── client3.cpp
├── client3.dsp
├── client3.dsw
├── client3.ncb
├── client3.opt
├── client3.plg
├── client5.cpp
├── client.cpp
├── client.dsp
├── client.dsw
├── client.ncb
├── client.opt
├── client.plg
├── c网络编程
│ ├── Linux+C网络编程.doc
│ ├── perlinfo
│ │ ├── PCHome_download.html
│ │ └── perlinfo.exe
│ ├── perlinfo.zip
│ └── Windows下C语言网络编程快速入门.doc
├── Debug
│ ├── client3.exe
│ ├── client3.ilk
│ ├── client3.obj
│ ├── client3.pch
│ ├── client3.pdb
│ ├── client.exe
│ ├── client.ilk
│ ├── client.obj
│ ├── client.pch
│ ├── client.pdb
│ ├── server0.bsc
│ ├── server0.exe
│ ├── server0.ilk
│ ├── server0.obj
│ ├── server0.obj.enc
│ ├── server0.pch
│ ├── server0.pdb
│ ├── server0.sbr
│ ├── server3.exe
│ ├── server3.ilk
│ ├── server3.obj
│ ├── server3.pch
│ ├── server3.pdb
│ ├── server5.obj
│ ├── server5.pch
│ ├── server.bsc
│ ├── server.exe
│ ├── server.ilk
│ ├── serverl.pch
│ ├── server.obj
│ ├── server.pch
│ ├── server.pdb
│ ├── server.sbr
│ ├── try.exe
│ ├── try.ilk
│ ├── try.obj
│ ├── try.pch
│ ├── try.pdb
│ ├── vc60.idb
│ └── vc60.pdb
├── server0.cpp
├── server0.dsp
├── server0.dsw
├── server0.ncb
├── server0.opt
├── server0.plg
├── server1.cpp
├── server2.cpp
├── server3.cpp
├── server3.dsp
├── server3.dsw
├── server3.ncb
├── server3.opt
├── server3.plg
├── server5.cpp
├── server5.dsp
├── server5.dsw
├── server5.ncb
├── server5.opt
├── server5.plg
├── server.cpp
├── server.dsp
├── server.dsw
├── serverl.cpp
├── serverl.dsp
├── serverl.dsw
├── serverl.ncb
├── serverl.opt
├── serverl.plg
├── server.ncb
├── server.opt
├── server.plg
├── try.cpp
├── try.dsp
├── try.dsw
├── try.ncb
├── try.opt
└── try.plg
6 directories, 107 files
一个简单的socket网络编程例子: 服务器代码: #include #include #include #include #pragma comment(lib,"ws2_32.lib") //这句话的意思是加载ws2_32.lib这个静态库 #define NETWORK_EVENT WM_USER+100 //如果你用mfc做开发,你可以点击菜单project-〉setting-〉link-〉object/library中添加这个静态库。 //如果你用c语言,你需要通过#pragma comment(命令来连接静态库 int main(int argc, char* argv[]){ HANDLE hThread = NULL; //判断是否输入了端口号 if(argc!=3){ printf("Usage: %sPortNumber\n",argv[1]); exit(-1); } //把端口号转化成整数 short port; if((port = atoi(argv[2]))==0){ printf("端口号有误!"); exit(-1); } WSADATA wsa; //初始化套接字DLL if(WSAStartup(MAKEWORD(2,2),&wsa)!=0){ //高字节指定了次版本号,低字节指定了主版本号,两个字节加到一起,就是你想要的Winsock库的版本号了 printf("套接字初始化失败!"); exit(-1); } //创建套接字 SOCKET serverSocket; if((serverSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==INVALID_SOCKET){ printf("创建套接字失败!"); exit(-1); } struct sockaddr_in serverAddress; memset(&serverAddress,0,sizeof(sockaddr_in)); serverAddress.sin_family=AF_INET; serverAddress.sin_addr.S_un.S_addr = htonl(INADDR_ANY); serverAddress.sin_port = htons(port); //绑定 if(bind(serverSocket,(sockaddr*)&serverAddress,sizeof(serverAddress))==SOCKET_ERROR){ printf("套接字绑定到端口失败!端口: %d\n",port); exit(-1); } //进入侦听状态 if(listen(serverSocket,SOMAXCONN)==SOCKET_ERROR){ printf("侦听失败!"); exit(-1); } printf("Server %d is listening......\n",port); SOCKET clientSocket[5],maxSocket;//用来和客户端通信的套接字 struct sockaddr_in clientAddress;//用来和客户端通信的套接字地址 memset(&clientAddress,0,sizeof(clientAddress)); int addrlen = sizeof(clientAddress); fd_set fd_read; int i=0; int j; char buf[4096]; char buff[4096]="exit"; while(1) { FD_ZERO(&fd_read); maxSocket=serverSocket; FD_SET(serverSocket,&fd_read); //FD_SET(clientSocket[i-1],&fd_read); for(j=0;j<i;j++) { FD
【实例截图】
【核心代码】
4744302542998547981.rar
└── companywork
├── client
│ ├── client.dsp
│ ├── client.plg
│ └── Debug
│ ├── client.exe
│ ├── client.ilk
│ ├── client.obj
│ ├── client.pch
│ ├── client.pdb
│ ├── vc60.idb
│ └── vc60.pdb
├── client1.cpp
├── client2.cpp
├── client3.cpp
├── client3.dsp
├── client3.dsw
├── client3.ncb
├── client3.opt
├── client3.plg
├── client5.cpp
├── client.cpp
├── client.dsp
├── client.dsw
├── client.ncb
├── client.opt
├── client.plg
├── c网络编程
│ ├── Linux+C网络编程.doc
│ ├── perlinfo
│ │ ├── PCHome_download.html
│ │ └── perlinfo.exe
│ ├── perlinfo.zip
│ └── Windows下C语言网络编程快速入门.doc
├── Debug
│ ├── client3.exe
│ ├── client3.ilk
│ ├── client3.obj
│ ├── client3.pch
│ ├── client3.pdb
│ ├── client.exe
│ ├── client.ilk
│ ├── client.obj
│ ├── client.pch
│ ├── client.pdb
│ ├── server0.bsc
│ ├── server0.exe
│ ├── server0.ilk
│ ├── server0.obj
│ ├── server0.obj.enc
│ ├── server0.pch
│ ├── server0.pdb
│ ├── server0.sbr
│ ├── server3.exe
│ ├── server3.ilk
│ ├── server3.obj
│ ├── server3.pch
│ ├── server3.pdb
│ ├── server5.obj
│ ├── server5.pch
│ ├── server.bsc
│ ├── server.exe
│ ├── server.ilk
│ ├── serverl.pch
│ ├── server.obj
│ ├── server.pch
│ ├── server.pdb
│ ├── server.sbr
│ ├── try.exe
│ ├── try.ilk
│ ├── try.obj
│ ├── try.pch
│ ├── try.pdb
│ ├── vc60.idb
│ └── vc60.pdb
├── server0.cpp
├── server0.dsp
├── server0.dsw
├── server0.ncb
├── server0.opt
├── server0.plg
├── server1.cpp
├── server2.cpp
├── server3.cpp
├── server3.dsp
├── server3.dsw
├── server3.ncb
├── server3.opt
├── server3.plg
├── server5.cpp
├── server5.dsp
├── server5.dsw
├── server5.ncb
├── server5.opt
├── server5.plg
├── server.cpp
├── server.dsp
├── server.dsw
├── serverl.cpp
├── serverl.dsp
├── serverl.dsw
├── serverl.ncb
├── serverl.opt
├── serverl.plg
├── server.ncb
├── server.opt
├── server.plg
├── try.cpp
├── try.dsp
├── try.dsw
├── try.ncb
├── try.opt
└── try.plg
6 directories, 107 files
标签:
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论