用C或者C++语言实现SOCKET通信


Posted in 面试题 onFebruary 24, 2015
#include
#include
void main()
{
WORDwVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(1,1);
err = WSAStartup(wVersionRequested,&wsaData);
if( err != 0)
{
return;
}
if(LOBYTE( wsaData.wVersion ) != 1||
HIBYTE( wsaData.wVersion) != 1)
{
WSACleanup();
return;
}
SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);
bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
listen(sockSrv,5);
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
while(1)
{
SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
char sendBuf[100];
sprint(sendBuf,”Welcome %s to http://www.sunxin.org“,
inet_ntoa(addrClient.sin_addr));
send(sockConn,sendBuf,strlen(sendBuf)+1,0);
char recvBuf[100];
recv(sockConn,recvBuf);
printf(“%s\n”,recvBuf);
closesocket(sockConn);
WSACleanup();
}
}
注:这是Server端;File->New->Win32 Console Application,工程名:TcpSrv;然后,File->New->C++ Source File,文件名:TcpSrv;在该工程的Setting的Link的Object/library modules项要加入ws2_32.lib
#include
#include
void main()
{
WORDwVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(1,1);
err = WSAStartup(wVersionRequested,&wsaData);
if( err != 0)
{
return;
}
if(LOBYTE( wsaData.wVersion ) != 1||
HIBYTE( wsaData.wVersion) != 1)
{
WSACleanup();
return;
}
SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=inet_addr(“127.0.0.1″);
addrSrv.sin_family=AF_INET;
addrSrv.sin_porthtons(6000);
connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
char recvBuf[100];
recv(sockClient,recvBuf,100,0);
printf(“%s\n”,recvBuf);
send(sockClient,”This is zhangsan”,strlen(“This is zhangsan”)+1,0);
closesocket(sockClient);
WSACleanup();
}
注:这是Client端;File->New->Win32 Console Application,工程名:TcpClient;然后,File->New->C++ Source File,文件名:TcpClient;同理,在该工程的Setting的Link的Object/library modules项要加入ws2_32.lib

Tags in this post...

面试题 相关文章推荐
关键字final的用法
Oct 02 面试题
int *p=NULL和*p= NULL有什么区别
Oct 23 面试题
如何向接受结构参数的函数传入常数值
Feb 17 面试题
解释一下Windows的消息机制
Jan 30 面试题
存储过程的优缺点是什么
Jan 10 面试题
程序集与命名空间有什么不同
Jul 25 面试题
介绍一下Linux中的链接
Jun 05 面试题
EJB2和EJB3在架构上的不同点
Sep 29 面试题
解释一下钝化(Swap out)
Dec 26 面试题
JavaScript获取当前url根目录(路径)
Feb 19 面试题
介绍一下Ruby的特点
Jan 20 面试题
SOA面试题:如何在SOA中实现松耦合
Jul 21 面试题
写出一个方法实现冒泡排序
Jul 08 #面试题
输入一行文字,找出其中大写字母、小写字母、空格、数字、及其他字符各有多少
Apr 15 #面试题
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
Nov 18 #面试题
递归计算如下递归函数的值(斐波拉契)
Feb 04 #面试题
写出二分查找算法的两种实现
May 13 #面试题
编写类String的构造函数、析构函数和赋值函数
May 29 #面试题
C++:memset ,memcpy和strcpy的根本区别
Apr 27 #面试题
You might like
PHP 和 COM
2006/10/09 PHP
PHP中实现进程间通讯
2006/10/09 PHP
几个有用的php字符串过滤,转换函数代码
2012/05/01 PHP
php生成局部唯一识别码LUID的代码
2012/10/06 PHP
用javascript控制iframe滚动的代码
2007/04/10 Javascript
js word表格动态添加代码
2010/06/07 Javascript
Jquery倒计时源码分享
2014/05/16 Javascript
深入理解JavaScript编程中的原型概念
2015/06/25 Javascript
jquery实现点击向下展开菜单项(伸缩导航)效果
2015/08/22 Javascript
javascript中eval解析JSON字符串
2016/02/27 Javascript
解决JS组件bootstrap table分页实现过程中遇到的问题
2016/04/21 Javascript
js操作XML文件的实现方法兼容IE与FireFox
2016/06/25 Javascript
JavaScript实现广告弹窗效果
2016/08/09 Javascript
Node.js使用NodeMailer发送邮件实例代码
2017/03/06 Javascript
序列化模块json代码实例详解
2020/03/03 Javascript
JavaScript计算出两个数的差值
2020/03/19 Javascript
Vue3为什么这么快
2020/09/23 Javascript
微信小程序基于高德地图API实现天气组件(动态效果)
2020/10/22 Javascript
[35:55]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.11
2020/12/13 DOTA
Python中用Decorator来简化元编程的教程
2015/04/13 Python
Python使用multiprocessing创建进程的方法
2015/06/04 Python
使用python3+xlrd解析Excel的实例
2018/05/04 Python
python发送邮件脚本
2018/05/22 Python
Python中使用__new__实现单例模式并解析
2019/06/25 Python
Python函数参数定义及传递方式解析
2020/06/10 Python
python excel和yaml文件的读取封装
2021/01/12 Python
Bibloo罗马尼亚网站:女装、男装、童装及鞋子和配饰
2019/07/20 全球购物
澳大利亚二手奢侈品网站:Modsie
2019/09/23 全球购物
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
科颜氏印度官网:Kiehl’s印度
2021/02/20 全球购物
abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?
2012/10/15 面试题
解除劳动合同协议书
2014/04/14 职场文书
小学见习报告
2014/10/31 职场文书
离婚撤诉申请书范本
2015/05/18 职场文书
幼儿园音乐教学反思
2016/02/18 职场文书
《中国古代诗歌散文欣赏》高中语文教材
2019/08/20 职场文书