最近我计算机网络课程要做作业了,没办法跟着老师一步一步的写C语言的代码,使用的计算就是Socket通信发送消息;代码实现的功能很简单,客户端向服务器端发送消息,服务器端接收客户端发来的消息,并且输出显示到屏幕上;代码中的每个方法的返回值都应该做判断出错情况,以保证程序的稳定性,这里只是测试代码。
老师是录制的视频讲解的,其他其中使用的到的方法要求我们自己去查相关的MSDN资料库,如果有不懂的,就自己上网查。
服务器端接收代码:
#include <Winsock2.h>
#pragma comment(lib,"Ws2_32.lib")
#include
<stdio.h>
#include <memory.h>
void main()
{
WSAData wsd;
WSAStartup(MAKEWORD(2,0),&wsd);
SOCKET s =NULL;
s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
struct
sockaddr_in
ch;
memset(&ch,0,sizeof(ch));
ch.sin_family=AF_INET;
ch.sin_addr.s_addr=INADDR_ANY;
ch.sin_port=htons(1041);
int
b=bind(s,(struct sockaddr *) &ch,sizeof(ch));
#define QUEUE_SIZE
5
int l=listen(s,QUEUE_SIZE);
printf("正在监听本机的1041端口!\n");
SOCKET
sc=accept(s,0,0);
printf("客户端已经连接到本机的1041端口!\n");
#define BUF_SIZE
4096
int receByt=0;
while(1)
{
char
buf[BUF_SIZE];
receByt=recv(sc,buf,BUF_SIZE,0);
buf[receByt]=‘\0‘;
if(receByt>0)
{
printf("接收的消息是:%s\n",buf);
}
else
{
printf("接收消息结束!");
break;
}
}
int
ic=closesocket(sc);
int is=closesocket(s);
}
======================================================
客户端发送的代码:
#include <Winsock2.h>
#pragma comment(lib,"Ws2_32.lib")
#include
<stdio.h>
#include <memory.h>
#include <string.h>
void main()
{
WSAData wsd;
WSAStartup(MAKEWORD(2,0),&wsd);
SOCKET s =NULL;
s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
struct
sockaddr_in
ch;
memset(&ch,0,sizeof(ch));
ch.sin_family=AF_INET;
ch.sin_addr.s_addr=inet_addr("127.0.0.1");
ch.sin_port=htons(1041);
int c=connect(s,(struct sockaddr *)
&ch,sizeof(ch));
printf("已经连接到服务器的1041端口!现在可以向服务器发送消息了!\n");
#define
BUF_SIZE 4096
char info[1024],buf[BUF_SIZE];
while(1)
{
gets(info);
if(info[0]==‘\0‘)
break;
strcpy(buf,info);
int
nsend=send(s,buf,strlen(buf),0);
}
int ic=closesocket(s);
}
C语言Socket编程(计算机网络作业),布布扣,bubuko.com
原文地址:http://www.cnblogs.com/mq0036/p/3710507.html