C语言Socket网络编程实例

Posted 十叁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言Socket网络编程实例相关的知识,希望对你有一定的参考价值。

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

服务端:

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <winsock2.h>
#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 <stdio.h>
#include <winsock2.h>
#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;
}

  

以上是关于C语言Socket网络编程实例的主要内容,如果未能解决你的问题,请参考以下文章

C语言socket高并发网络编程

Python 之 Socket编程(TCP/UDP)

windows 下 c语言,不是c++,c语言socket的简单实例

一起talk C栗子吧(第一百五十一回:C语言实例--socket通信地址)

C语言 UDP socket 简单客户端 编程,急

C语言socket连接问题!