c language network socket communication is completed vs run

Basics: Here Insert Picture Description
Code:
Server:

#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;
}
在这里插入代码片

Client:

#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;
}
在这里插入代码片

running result:
Here Insert Picture Description

Published 130 original articles · won praise 16 · views 30000 +

Guess you like

Origin blog.csdn.net/feiqipengcheng/article/details/105020342