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

面试题 相关文章推荐
一套Java笔试题
Aug 20 面试题
数据库笔试题
May 09 面试题
SQL SERVER面试资料
Mar 30 面试题
命名空间(namespace)和程序集(Assembly)有什么区别
Sep 25 面试题
盛大笔试题
Nov 05 面试题
C#如何调用Windows程序打开一个文档
Dec 26 面试题
27个经典Linux面试题及答案,你知道几个?
Mar 11 面试题
linux下进程间通信的方式
Jan 23 面试题
Linux操作面试题
May 16 面试题
Java中各种基本数据类型的默认值都是什么
Dec 22 面试题
UNIX文件系统分类
Nov 11 面试题
信号量和自旋锁的区别?如何选择使用?
Sep 08 面试题
写出一个方法实现冒泡排序
Jul 08 #面试题
输入一行文字,找出其中大写字母、小写字母、空格、数字、及其他字符各有多少
Apr 15 #面试题
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
Nov 18 #面试题
递归计算如下递归函数的值(斐波拉契)
Feb 04 #面试题
写出二分查找算法的两种实现
May 13 #面试题
编写类String的构造函数、析构函数和赋值函数
May 29 #面试题
C++:memset ,memcpy和strcpy的根本区别
Apr 27 #面试题
You might like
PHP支持多种格式图片上传(支持jpg、png、gif)
2011/11/03 PHP
Zend Framework创建自己的动作助手详解
2016/03/05 PHP
PHP实现获取第一个中文首字母并进行排序的方法
2017/05/09 PHP
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
2015/08/04 Javascript
jQuery语法小结(超实用)
2015/12/31 Javascript
AngularJS  $modal弹出框实例代码
2016/08/24 Javascript
jQuery 移动端拖拽(模块化开发,触摸事件,webpack)
2016/10/28 Javascript
如何实现星星评价(jquery.raty.js插件)
2016/12/21 Javascript
原生JS实现N级菜单的代码
2017/05/21 Javascript
node.js中grunt和gulp的区别详解
2017/07/17 Javascript
Vue中使用clipboard实现复制功能
2018/09/05 Javascript
微信小程序公用参数与公用方法用法示例
2019/01/09 Javascript
微信小程序搜索功能(附:小程序前端+PHP后端)
2019/02/28 Javascript
JQuery获取元素尺寸、位置及页面滚动事件应用示例
2019/05/14 jQuery
angular8.5集成TinyMce5的使用和详细配置(推荐)
2020/11/16 Javascript
[14:00]DOTA2国际邀请赛史上最长大战 赛后专访B神
2013/08/10 DOTA
[00:48]DOTA2国际邀请赛公开赛报名开始 扫码开启逐梦之旅
2018/06/06 DOTA
35个Python编程小技巧
2014/04/01 Python
python3.x 将byte转成字符串的方法
2018/07/17 Python
TensorFlow打印tensor值的实现方法
2018/07/27 Python
Python之循环结构
2019/01/15 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
2019/08/12 Python
python实现XML解析的方法解析
2019/11/16 Python
pytorch读取图像数据转成opencv格式实例
2020/06/02 Python
html5小技巧之通过document.head获取head元素
2014/06/04 HTML / CSS
Lookfantastic台湾:英国彩妆美发保养购物网
2018/03/26 全球购物
香港莎莎官网Sasa.com:亚洲著名国际化妆品商城
2019/11/10 全球购物
3D空间设计学生找工作的自我评价
2013/10/28 职场文书
新娘父亲婚礼致辞
2014/01/16 职场文书
一年级语文教学反思
2014/02/13 职场文书
大学生村官个人总结
2015/02/15 职场文书
清洁工个人总结
2015/03/04 职场文书
公司员工管理制度
2015/08/04 职场文书
考研经验交流会策划书
2015/11/02 职场文书
2016应届毕业生实习评语
2015/12/01 职场文书
MySQL库表名大小写的选择
2021/06/05 MySQL