WinSocket聊天程序实例(多线程)
#pragma comment(lib,"Ws2_32.lib")
#include <stdio.h>
#include <Winsock2.h>
SOCKET sockSrv;//连接所用套节字
SOCKET sockConn; //监听套接字
SOCKADDR_IN addrSrv;
DWORD WINAPI funA(LPVOID lp);
//定义发送和接收的缓存数组
char sendBuf[];
char recvBuf[]; void main(){
//要求使用的版本
WORD wVersionRequested;
//
WSADATA wsaData;
int err; wVersionRequested = MAKEWORD(,);
//初始化WinSock dll库 WSAStartup 函数返回0表示初始化成功
err = WSAStartup(wVersionRequested,&wsaData);
//测试版本获取结果
//printf("%d\n",err);
if(err!=){
printf("WinSock初始化失败\n");
return; } if(LOBYTE(wsaData.wVersion)!=||HIBYTE(wsaData.wVersion)!=){
WSACleanup();
return;
}
printf("服务器已启动......\n"); //创建Socket套接字
sockSrv = socket(AF_INET,SOCK_STREAM,);
//通讯的IP地址 htonl把主机字节转换成网络字节
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
//使用IP地址族
addrSrv.sin_family=AF_INET;
//通讯的端口号
addrSrv.sin_port=htons();
//函数绑定 将套接字与通讯地址建立联系
bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
//建立监听队列(把套接字转换成监听模式)
listen(sockSrv,);
int len=sizeof(SOCKADDR); //accept接受客户请求
sockConn = accept(sockSrv,(SOCKADDR*)&addrSrv,&len); sprintf(sendBuf,"服务器IP: %s ;连接成功!",inet_ntoa(addrSrv.sin_addr));
//发送消息
send(sockConn,sendBuf,strlen(sendBuf)+,); HANDLE a;
DWORD dwT; //参数1:使用默认的安全性;参数2:与调用线程一样的栈大小;
//参数3:线程入口函数地址;参数4:传递给线程的参数;参数5:线程创建标记;参数6:新线程的ID
a=CreateThread(NULL,,funA,,,&dwT);
CloseHandle(a); //消息循环接收和发送
while(){
//从控制台接收用户输入
//printf("服务器说:");
scanf("%s",sendBuf);
//发送消息到客户端
send(sockConn,sendBuf,strlen(sendBuf)+,);
}
closesocket(sockConn);
//关闭连接和套接字
WSACleanup();
} DWORD WINAPI funA(LPVOID lp)
{
while(){
//从服务器接收数据显示到控制台
if(recv(sockConn,recvBuf,,) != -){
printf("客户端说:%s\n",recvBuf);
}else{
printf("连接已经中断.....请检查客户端是否连接并重试。");
system("pause");
exit();
}
}
return ;
}
WinSocket聊天程序实例(多线程)的更多相关文章
- Node聊天程序实例01
作者:vousiu 出处:http://www.cnblogs.com/vousiu 本实例参考自Mike Cantelon等人的<Node.js in Action>一书. 本实例要实现 ...
- Node聊天程序实例04:chat_ui.js
作者:vousiu 出处:http://www.cnblogs.com/vousiu 本实例参考自Mike Cantelon等人的<Node.js in Action>一书. 这个程序在客 ...
- Node聊天程序实例03:chat.js
作者:vousiu 出处:http://www.cnblogs.com/vousiu 本实例参考自Mike Cantelon等人的<Node.js in Action>一书. chat.j ...
- Node聊天程序实例06:server.js
作者:vousiu 出处:http://www.cnblogs.com/vousiu 本实例参考自Mike Cantelon等人的<Node.js in Action>一书. server ...
- Node聊天程序实例05:index.html和style.css
作者:vousiu 出处:http://www.cnblogs.com/vousiu 本实例参考自Mike Cantelon等人的<Node.js in Action>一书. index. ...
- Node聊天程序实例02:chat_server.js
作者:vousiu 出处:http://www.cnblogs.com/vousiu 本实例参考自Mike Cantelon等人的<Node.js in Action>一书. chat_s ...
- boost asio异步读写网络聊天程序client 实例具体解释
boost官方文档中聊天程序实例解说 数据包格式chat_message.hpp <pre name="code" class="cpp">< ...
- boost asio异步读写网络聊天程序客户端 实例详解
boost官方文档中聊天程序实例讲解 数据包格式chat_message.hpp <pre name="code" class="cpp">< ...
- java Socket多线程聊天程序
参考JAVA 通过 Socket 实现 TCP 编程 参考java Socket多线程聊天程序(适合初学者) 以J2SDK-1.3为例,Socket和ServerSocket类库位于java.net包 ...
随机推荐
- java 练习
class Hello{ public static void main(String [] args) { System.out.println(" Hello 这是我的第一个java作品 ...
- 三维重建面试13X:一些算法试题-今日头条AI-Lab
被人牵着鼻子走,到了地方还墨明棋妙地吃一顿砖头.今日头条AI-Lab,其实我一直发现,最擅长的还是点云图像处理,且只是点云处理. 一.C++题目 New 与Malloc的区别: ...
- Windows下VS2013 C++编译测试faster-rcnn
[原创帖!转载请注明出处:http://www.cnblogs.com/LaplaceAkuir/p/6445189.html] 本人最近研究faster-rcnn,在ubuntu成功跑通matlab ...
- LOJ #6041. 「雅礼集训 2017 Day7」事情的相似度 LCT+SAM+线段树
Code: #include<bits/stdc++.h> #define maxn 200003 using namespace std; void setIO(string s) { ...
- Emoji表情处理工具类
import java.util.regex.Matcher; import java.util.regex.Pattern; public class EmojiToString { /** * 将 ...
- eas之EntityViewInfo对象mainQuery中查询条件
EntityViewInfo对象mainQuery中查询条件: 添加查询字段:(Sql语句中的selectz子句内容) SelecttorItemCollection sic=new Sele ...
- Vue解决跨域之反向代理
目录 : config/index.js module.exports = { dev: { // Paths assetsSubDirectory: 'static', assetsPublicPa ...
- centos 配置svn http serve
你看到的这个文章来自于http://www.cnblogs.com/ayanmw 基本的安装包有: subversion /httpd/ svn的httpd的mod_dav_svn mod_authz ...
- struts2中<jsp:forward>跳转时报404错误的问题
index.jsp页面: <jsp:forward page="show.action"></jsp:forward> 在struts.x ...
- firefox历史版本下载地址
http://ftp.mozilla.org/pub/firefox/releases/