c语言网络编程实例pdf下载,C语言Socket网络编程实例

转自:http://www.cnblogs.com/huxc/p/4272940.html

服务端:

#define _CRT_SECURE_NO_WARNINGS

#include

#include

#pragma comment (lib, "ws2_32.lib")

/*

TCP服务端

*/

int main(void)

{

int len = 0;

WSADATA wd;

int ret = 0;

SOCKET s, c;

char sendBuf[1000] = "", recvBuf[1000] = "";

SOCKADDR_IN saddr, caddr;

ret = WSAStartup(MAKEWORD(2, 2), &wd); /*1.初始化操作*/

if (ret != 0)

{

return 0;

}

if (HIBYTE(wd.wVersion) != 2 || LOBYTE(wd.wVersion) != 2)

{

printf("初始化失败");

WSACleanup();

return 1;

}

/*2.创建服务端socket*/

s = socket(AF_INET, SOCK_STREAM, 0);

/*3.设置服务端信息*/

saddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);

saddr.sin_family = AF_INET; /*协议类型*/

saddr.sin_port = htons(8888);

/*4.绑定在本地端口*/

bind(s, (SOCKADDR *)&saddr, sizeof(SOCKADDR));

/*5.监听端口*/

listen(s, 5);

len = sizeof(SOCKADDR);

while (1)

{

/*6.等待客户端连接,会阻塞在此处,直到有客户端连接到来。*/

c = accept(s, (SOCKADDR*)&caddr, &len);

sprintf(sendBuf, "欢迎来到我的第一个socket,您的ip地址为:%s\n", inet_ntoa(caddr.sin_addr));

/*7.发送数据到客户端*/

send(c, sendBuf, strlen(sendBuf) + 1, 0);

/*8.接受客户端的返回*/

recv(c, recvBuf, 1000, 0);

/*9.打印出客户端发送来的数据*/

printf("%s\n", recvBuf);

/*10.如果不再跟这个客户端联系,就关闭它*/

closesocket(c);

}

/*如果有退出循环的条件,这里还需要清除对socket库的使用*/

/* WSACleanup();*/

return 0;

}

客户端:

#define _CRT_SECURE_NO_WARNINGS

#include

#include

#pragma comment (lib, "ws2_32.lib")

int main(void)

{

WSADATA wd;

int ret = 0;

SOCKET c;

char recvBuf[1000] = "", sendBuf[1000] = "";

SOCKADDR_IN saddr;

ret = WSAStartup(MAKEWORD(2, 2), &wd); /*1.初始化操作*/

if (ret != 0)

{

return 0;

}

if (HIBYTE(wd.wVersion) != 2 || LOBYTE(wd.wVersion) != 2)

{

printf("初始化失败");

WSACleanup();

return 1;

}

/*2.创建客户端socket*/

c = socket(AF_INET, SOCK_STREAM, 0);

/*3.定义要连接的服务端信息*/

saddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");

saddr.sin_family = AF_INET;

saddr.sin_port = htons(8888);

/*4.连接服务端*/

connect(c, (SOCKADDR*)&saddr, sizeof(SOCKADDR));

recv(c, recvBuf, 1000, 0);

printf("服务端发来的数据:%s\n", recvBuf);

sprintf(sendBuf, "服务端你好!!!");

send(c, sendBuf, strlen(sendBuf) + 1, 0);

closesocket(c);

WSACleanup();

getchar();

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值