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

面试题 相关文章推荐
PHP如何自定义函数
Sep 16 面试题
PHP面试题及答案二
May 23 面试题
PHP面试题附答案
Nov 28 面试题
联想C++笔试题
Jun 13 面试题
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
Aug 17 面试题
如何用SQL语句进行模糊查找
Sep 25 面试题
必须要使用游标的SQL语句有那些
May 07 面试题
C#笔试题集合
Jun 21 面试题
P/Invoke是什么
Jul 31 面试题
介绍一下Linux内核的排队自旋锁
Jan 04 面试题
AJAX都有哪些有点和缺点
Nov 03 面试题
同步和异步有何异同,在什么情况下分别使用他们?
Dec 28 面试题
写出一个方法实现冒泡排序
Jul 08 #面试题
输入一行文字,找出其中大写字母、小写字母、空格、数字、及其他字符各有多少
Apr 15 #面试题
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
Nov 18 #面试题
递归计算如下递归函数的值(斐波拉契)
Feb 04 #面试题
写出二分查找算法的两种实现
May 13 #面试题
编写类String的构造函数、析构函数和赋值函数
May 29 #面试题
C++:memset ,memcpy和strcpy的根本区别
Apr 27 #面试题
You might like
PHP文件锁函数flock()详细介绍
2014/11/18 PHP
php如何修改SESSION的生存存储时间的实例代码
2017/07/05 PHP
些很实用且必用的小脚本代码
2006/06/26 Javascript
accesskey 提交
2006/06/26 Javascript
js操作时间(年-月-日 时-分-秒 星期几)
2010/06/20 Javascript
jQuery1.4.2与老版本json格式兼容的解决方法
2011/02/12 Javascript
jQuery使用ajaxSubmit()提交表单示例
2014/04/04 Javascript
分析了一下JQuery中的extend方法实现原理
2015/02/27 Javascript
jQuery实现动画效果circle实例
2015/08/06 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
2015/12/15 Javascript
React实现双向绑定示例代码
2016/09/19 Javascript
javascript 的变量、作用域和内存问题
2017/04/19 Javascript
JavaScript 完成注册页面表单校验的实例
2017/08/19 Javascript
webpack 单独打包指定JS文件的方法
2018/02/22 Javascript
一种angular的方法级的缓存注解(装饰器)
2018/03/13 Javascript
Vue 实现v-for循环的时候更改 class的样式名称
2020/07/17 Javascript
vue中的循环对象属性和属性值用法
2020/09/04 Javascript
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
2017/08/18 Python
Python基于dom操作xml数据的方法示例
2018/05/12 Python
Flask框架Flask-Login用法分析
2018/07/23 Python
Python 经典面试题 21 道【不可错过】
2018/09/21 Python
python利用re,bs4,requests模块获取股票数据
2019/07/29 Python
python能做哪方面的工作
2020/06/15 Python
python regex库实例用法总结
2021/01/03 Python
跨域修改iframe页面内容详解
2019/10/31 HTML / CSS
Beauty Expert美国/加拿大:购买奢侈美容产品
2018/12/05 全球购物
预备党员2014全国两会学习心得体会
2014/03/10 职场文书
网吧最新创业计划书范文
2014/03/27 职场文书
幼儿园大班开学教师寄语
2014/04/03 职场文书
2014教师“四风问题”对照检查材料思想汇报
2014/09/16 职场文书
工作期间打牌检讨书范文
2014/11/20 职场文书
2015年感恩父亲节演讲稿
2015/03/19 职场文书
举起手来观后感
2015/06/09 职场文书
2016年党建工作简报
2015/11/26 职场文书
2019年大学生职业生涯规划书最新范文
2019/03/25 职场文书
在项目中使用redis做缓存的一些思路
2021/09/14 Redis