教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 初中教育 >

Socket服务器端与客户端程序

来源:网络收集 时间:2026-08-26
导读: 本例主要编写了网络通信的客户端程序,服务器端程序。 服务器端 #include Winsock2.h #includestdio.h #includestdlib.h #define DEFAULT_PORT 789 #define DATA_BUFFER 1024 void main() { int i; int iLen; int iSend; int k; char buf[]= Hello Client!; c

本例主要编写了网络通信的客户端程序,服务器端程序。


服务器端
#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();
}

…… 此处隐藏:1103字,全部文档内容请下载后查看。喜欢就下载吧 ……
Socket服务器端与客户端程序.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1565343.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)