socket网络通信 c语言完成 vs运行

Posted 月屯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了socket网络通信 c语言完成 vs运行相关的知识,希望对你有一定的参考价值。

基础知识:
代码:
服务器:

#include<stdio.h>
#include<windows.h>
#pragma comment(lib,"ws2_32.lib") 

 SOCKADDR_IN cAddr=0;
	 int len=sizeof cAddr;
 SOCKET clientSocket;

int main()

	//1.请求版本号 

	WSADATA wsaData;
	WSAStartup(MAKEWORD(2,2),&wsaData);
	if(LOBYTE(wsaData.wVersion)!=2||HIBYTE(wsaData.wVersion)!=2)
			printf("连接失败\\n");
			return -1;
	
	printf("请求协议成功\\n"); 

	//2.创建socket

	SOCKET severSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);//通信协议类型,通信用的数据类型,保护方式
	if(severSocket==-1)
	printf("创建socket失败\\n");
	WSACleanup();
	return -2;
	printf("创建socket成功\\n");

	//3.创建协议地址族

	SOCKADDR_IN addr=0;
	addr.sin_family=AF_INET;//协议版本
	addr.sin_addr.S_un.S_addr=inet_addr("192.168.43.140");//用自己的
	addr.sin_port=htons(10086);//用10000左右,小的端口被系统用到

	//4.绑定

	int r=bind(severSocket,(sockaddr*)&addr,sizeof addr);
	if(r==-1)
	printf("bind失败\\n");
	closesocket(severSocket);
	WSACleanup();
	return -2;
	printf("bind成功\\n");
	
	//5.监听

	r=listen(severSocket,10);
	if(r==-1)
	printf("listen失败\\n");
	closesocket(severSocket);
	WSACleanup();
	return -2;
	printf("listen成功\\n");
	
	//6.等待客户端连接 阻塞 尾生抱柱

	
     clientSocket=accept(severSocket,(sockaddr*)&cAddr,&len);
	if(clientSocket==SOCKET_ERROR)
	printf("服务器宕机\\n");
	closesocket(severSocket);
	WSACleanup();
	return -2;
	printf("有客户端连接到服务器:%s!\\n",inet_ntoa(cAddr.sin_addr));

	

	//7.通信

	char buff[1024];
	while(1)
	memset(buff,0,1024);
	r=recv(clientSocket,buff,1023,NULL);
	if(r>0)
	 buff[r]=0;//添加‘\\0’
	printf("接收>>%s\\n",buff);
	memset(buff,0,1024);
    printf("发送>>");
    scanf("%s",buff);
	printf("\\n");
	 send(clientSocket,buff,strlen(buff),NULL);
	

	//8.关闭socket

	closesocket(severSocket);

	//9.清除协议信息

	WSACleanup();
	return 0;

在这里插入代码片

客户端:

#include<stdio.h>
#include<windows.h>
#pragma comment(lib,"ws2_32.lib") 

SOCKET clientSocket;


int main()

	//1.请求版本号 

	WSADATA wsaData;
	WSAStartup(MAKEWORD(2,2),&wsaData);
	if(LOBYTE(wsaData.wVersion)!=2||HIBYTE(wsaData.wVersion)!=2)
			printf("连接失败\\n");
			return -1;
	
	printf("请求协议成功\\n"); 

	//2.创建socket

	 clientSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);//通信协议类型,通信用的数据类型,保护方式
	if(clientSocket==-1)
	printf("创建socket失败\\n");
	WSACleanup();
	return -2;
	printf("创建socket成功\\n");

	//3.获取服务器协议地址族

	SOCKADDR_IN addr=0;
	addr.sin_family=AF_INET;//协议版本
	addr.sin_addr.S_un.S_addr=inet_addr("192.168.43.140");//用自己的
	addr.sin_port=htons(10086);//用10000左右,小的端口被系统用到

	//4.连接服务器
	int r=connect(clientSocket,(sockaddr*)&addr,sizeof addr);
    if(r==-1)
	printf("连接服务器失败\\n");
	return -1;
	printf("连接服务器成功\\n");

	//5.通信

	char buff[1024];
  
	 while(1)
		 memset(buff,0,1024);
	 printf("发送>>");
	 scanf("%s",buff);
	 printf("\\n");
	 r=send(clientSocket,buff,strlen(buff),NULL);
     memset(buff,0,1024);
	 r=recv(clientSocket,buff,1023,NULL);
	if(r>0)
	 buff[r]=0;//添加‘\\0’
	printf("接受>>%s\\n",buff);
	
	 

	
	return 0;

在这里插入代码片

运行效果:

以上是关于socket网络通信 c语言完成 vs运行的主要内容,如果未能解决你的问题,请参考以下文章

如何在Windows环境下的VS中安装使用Google Protobuf完成SOCKET通信

C#谁能给我个,C/S 通过Socket与线程通信的例子,,

如何使用VS2013编写C语言? 包括编译连接和运行测试.

安卓使用Socket发送中文,C语言服务端接收乱码问题解决方式

luajit VS C,运行性能超过C?

C语言socket高并发网络编程