用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...

面试题 相关文章推荐
SQL Server提供的3种恢复模型都是什么? 有什么区别?
May 13 面试题
什么是反射?如何实现反射?
Jul 25 面试题
Internet主要有哪些网络群组成
Dec 24 面试题
什么是ARP(Address Resolution Protocol)地址解析协议
Oct 31 面试题
别名指示符是什么
Oct 08 面试题
Linux上比较文件的命令都有哪些
Sep 28 面试题
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
Apr 17 面试题
介绍一下gcc特性
Oct 31 面试题
Ajax的工作原理
Dec 04 面试题
final, finally, finalize的区别
Mar 01 面试题
J2EE相关知识面试题
Aug 26 面试题
既然说Ruby中一切都是对象,那么Ruby中类也是对象吗
Jan 26 面试题
写出一个方法实现冒泡排序
Jul 08 #面试题
输入一行文字,找出其中大写字母、小写字母、空格、数字、及其他字符各有多少
Apr 15 #面试题
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
Nov 18 #面试题
递归计算如下递归函数的值(斐波拉契)
Feb 04 #面试题
写出二分查找算法的两种实现
May 13 #面试题
编写类String的构造函数、析构函数和赋值函数
May 29 #面试题
C++:memset ,memcpy和strcpy的根本区别
Apr 27 #面试题
You might like
mysql时区问题
2008/03/26 PHP
程序员编程十条戒律
2009/07/09 PHP
PHP命名空间(Namespace)简明教程
2014/06/11 PHP
PHP防止注入攻击实例分析
2014/11/03 PHP
php+html5基于websocket实现聊天室的方法
2015/07/17 PHP
PHP将字符串首字母大小写转换的实例
2017/01/21 PHP
利用javascript实现全部删或清空所选的操作
2014/05/27 Javascript
jQuery中innerHeight()方法用法实例
2015/01/19 Javascript
jquery实现最简单的滑动菜单效果代码
2015/09/12 Javascript
JavaScript实现的简单烟花特效代码
2015/10/20 Javascript
jQuery实现弹出带遮罩层的居中浮动窗口效果
2016/09/12 Javascript
AngularJS实践之使用NgModelController进行数据绑定
2016/10/08 Javascript
vue-cli入门之项目结构分析
2017/04/20 Javascript
使用Vue完成一个简单的todolist的方法
2017/12/01 Javascript
在Vue中使用echarts的方法
2018/02/05 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
2020/07/30 Javascript
vue实现点击按钮“查看详情”弹窗展示详情列表操作
2020/09/09 Javascript
基于Python Shell获取hostname和fqdn释疑
2016/01/25 Python
python如何把嵌套列表转变成普通列表
2018/03/20 Python
创建pycharm的自定义python模板方法
2018/05/23 Python
使用Django启动命令行及执行脚本的方法
2018/05/29 Python
Python subprocess模块常见用法分析
2018/06/12 Python
解决python selenium3启动不了firefox的问题
2018/10/13 Python
Python实现微信机器人的方法
2019/09/06 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
2019/09/29 Python
Python 静态方法和类方法实例分析
2019/11/21 Python
利用 Python ElementTree 生成 xml的实例
2020/03/06 Python
python中time、datetime模块的使用
2020/12/14 Python
高级护理专业大学生求职信
2013/10/24 职场文书
工作时间上网检讨书
2014/02/03 职场文书
工程力学专业自荐信范文
2014/03/17 职场文书
交通违章检讨书
2014/09/21 职场文书
淘宝好评语句大全
2014/12/31 职场文书
2015人事行政工作总结范文
2015/05/21 职场文书
心术观后感
2015/06/11 职场文书
《我的美好婚事》动画化决定纪念插画与先导PV公开
2022/04/06 日漫