Socket服务器端与客户端程序
本例主要编写了网络通信的客户端程序,服务器端程序。
服务器端
#include <Winsock2.h>
#include<stdio.h>
#include<stdlib.h>
#define DEFAULT_PORT 789
#define DATA_BUFFER 1024
void main()
{
int i;
int iLen;
int iSend;
int k;
char buf[]=" Hello Client!";
char buffer[DATA_BUFFER];
int iPort=DEFAULT_PORT;
WSADATA wsaData;
SOCKET sListen,sAccept;
struct sockaddr_in ser,cli;
printf("--------------------------\n");
printf("Server waiting\n");
printf("--------------------------\n");
if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)
{
printf("Failed to load Winsock.\n");
return;
}
sListen=socket(AF_INET,SOCK_STREAM,0);
if(sListen==INVALID_SOCKET)
{
printf("socket() Failed:%d\n",WSAGetLastError());
return;
}
ser.sin_family=AF_INET;
ser.sin_port=htons(iPort);
ser.sin_addr.s_addr=htonl(INADDR_ANY);//INADDR_ANY代表通配地址,表示让内核选择
if(bind(sListen,(LPSOCKADDR)&ser,sizeof(ser))==SOCKET_ERROR)
{
printf("bind() Failed:%d\n",WSAGetLastError());
return;
}
if(listen(sListen,5)==SOCKET_ERROR)
{
printf("Listen Failed:%d",WSAGetLastError());
return;
}
iLen=sizeof(cli);
while(1)
{
sAccept=accept(sListen,(struct sockaddr*)&cli,&iLen);
if(sAccept==INVALID_SOCKET)
{
printf("accept() Failed:%d",WSAGetLastError);
break;
}
k=recv(sAccept,buffer,sizeof(buffer),0);
printf("receive from Client:%s\n",buffer);
printf("Client IP:[%s],port:[%d]\n",inet_ntoa(cli.sin_addr),ntohs(cli.sin_port));
printf("Server IP:[%s],port:[%d]\n",inet_ntoa(ser.sin_addr),ntohs(ser.sin_port));
iSend=send(sAccept,buf,sizeof(buf),0);
if(iSend==SOCKET_ERROR)
{
printf("send()Failed:%d\n",WSAGetLastError());
break;
}
else if(iSend==0)
break;
else
{
printf("Send to client %d bytes\n",iSend);
printf("----------------------------\n");
}
closesocket(sAccept);
}
closesocket(sListen);
WSACleanup();
}
客户端
#include <Winsock2.h>
#include<stdio.h>
#define DEFAULT_PORT 789
#define DATA_BUFFER 1024
void main(int argc,char *argv[])
{
WSADATA wsaData;
SOCKET sClient;
struct sockaddr_in ser;
int iPort=DEFAULT_PORT;
int iLen;
int iSend;
char buf[DATA_BUFFER];
//char *buffer="Hello Server!";
char *buffer=0;
if(argc<2)
{
printf("please input Hello server!\n");
return;
}
else{
buffer=argv[1];
printf("Send to Sever:%s\n",buffer);
}
memset(buf,0,sizeof(buf));
if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)
{
printf("Failed to load Winsock.\n");
return;
}
ser.sin_family=AF_INET;
ser.sin_port=htons(iPort);
ser.sin_addr.s_addr=inet_addr("127.0.0.1");
sClient=socket(AF_INET,SOCK_STREAM,0);//初始化socket连接符
if(sClient==INVALID_SOCKET)
{
printf("socket() Failed:%d\n",WSAGetLastError());
return;
}
if(conn
ect(sClient,(struct sockaddr *)&ser,sizeof(ser))==INVALID_SOCKET)
{
printf("connect()Failed:%d\n",WSAGetLastError());
return;
本例主要编写了网络通信的客户端程序,服务器端程序。
}
else
{
printf("Server IP:[%s],port:[%d]\n",inet_ntoa(ser.sin_addr),ntohs(ser.sin_port));
iSend=send(sClient,buffer,sizeof(buffer),0);
printf("Send to sever %d bytes\n",iSend);
if(iSend==SOCKET_ERROR)
{
printf("send()Failed:%d\n",WSAGetLastError());
return;
}
iLen=recv(sClient,buf,sizeof(buf),0);
if(iLen==0)
return;
else if(iLen==SOCKET_ERROR)
{
printf("recv()Faile
d:%d\n",WSAGetLastError());
return;
}
printf("receive data from server:%s\n",buf);
}
closesocket(sClient);
WSACleanup();
}
相关推荐:
- [初中教育]婚姻家庭法学教学教案
- [初中教育]浅谈小学语文教学中的创新教育
- [初中教育]中华人民共和国侵权责任法2009
- [初中教育]2016-2022年中国薄膜太阳能电池行业发
- [初中教育]多级轻型井点降水的应用
- [初中教育]外语教学法流派介绍和简评
- [初中教育]实验一、典型环节及其阶跃响应
- [初中教育]内蒙古2012-2013学年度国家奖学金获奖
- [初中教育]移动通信营销渠道管理探讨
- [初中教育]初三化学第一学期第一第二章基础知识点
- [初中教育]一天的食物教学设计
- [初中教育]光导照明系统的基本结构及工作原理
- [初中教育]长春市十一高、东北师范大学附属中学、
- [初中教育]“十三五”规划重点-配重式装卸车项目
- [初中教育]领导方法和领导艺术
- [初中教育]第三章 植物病虫草鼠害诊断与防治基
- [初中教育]2019届九年级语文上册 第二单元 6纪念
- [初中教育]甲级单位编制水豆腐项目可行性报告(立
- [初中教育]Ch8-1补充 09101数据库系统原理及应用-
- [初中教育]2017-2023年中国吊装设备行业市场分析
- 制作毕业纪念册需要哪些材料
- 2015-2016学年高二化学苏教版选修4课件
- 哈佛管理导师-创建商业案例
- 职场交际中的谈吐礼仪知识与职场会议接
- 中国糕点及面包行业发展现状与竞争战略
- 沂河“12·7”洪水茶山拦河坝
- 管道水流量计算公式
- 4-2发电机火灾事故处置方案
- 数字信号处理实验五
- 2009年经济师(中级)金融专业知识全真试
- 历史街区保护规划--04历史文化遗产保护
- 宁夏回族自治区中小学职称评价标准
- 评先评优测评表
- 圆的切线证明及线段长求解在在中考中的
- 【解析版】2015年江苏省南京外国语学校
- 人教版八年级上册科学第一章习题精华
- 责任心与执行力
- SA8000社会责任管理体系标准培训
- IgA肾病的饮食应注意
- 杭州市建设工程文件归档整理方案(试行)




