利用socket實現通訊

利用套接字(socket)實現通訊,client發送兩個數,server接收並返回這兩個數的和

server.c

#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
int main()
{
	int server_sockfd,client_sockfd;
	int server_len,client_len;
	struct sockaddr_in server_address;
	struct sockaddr_in client_address;
	server_sockfd=socket(AF_INET,SOCK_STREAM,0);
	server_address.sin.family=AF_INET;
	server_address.sin_addr.s_addr=inet_addr("10.0.3.206");
	server_address.sin_port=9734;
	server_len=sizeof(server_address);
	bind(server_sockfd,(struct sockaddr *) &server_address,server_len);
	listen(server_sockfd,5);
	while(1)
	{
		int a,b;
		printf("服務器等待消息\n");
		client_len=sizeof(client_address);
		client_sockfd=accept(server_sockfd,(struct sockaddr *) 
				&client_address,(socklen_t *__restrict) &client_len);
		read(client_sockfd,&a,sizeof(a));
		read(client_sockfd,&b,sizeof(b));
		a+=b;
		write(client_sockfd,&a,sizeof(a)); 
		close(client_sockfd);
	}
} 

client.c


#include<stdio.h>
#include<sys/types.h>	
#include<sys/socket.h>	//包含套接字函數庫 
#include<netinet/in.h>	//包含AF_INET相關結構 
#include<arpa/inet.h>	//包含AF_INET相關操作的函數 
#include<unistd.h>		//包含read(),write()函數 
int main()
{
	int sockfd;		//用於保存客戶套接字表示符 
	int len;		//用於保存客戶信息長度 
	struct sockaddr_in address;	//定義客戶套接字地址 
	int result;		//判斷錯誤信息 
	int a=97,b=5;	//定義傳送信息 
	sockfd=socket(AF_INET,SOCK_STREAM,0);	//定義套接字類型 
	address.sin_family=AF_INET;		//定義套接字地址中的域 
	address.sin_addr.s_addr=inet_addr("10.0.3.206");	//定義套接字的地址 
	address.sin_port=9734;		//定義套接字端口 
	len=sizeof(address);
	result=connect(sockfd,(struct *) &address,len); 	//請求連接 
	if(result==-1)		//判斷是否成功連接 
	{
		perror("連接失敗");
		return 1;
	}
	write(sockfd,&a,sizeof(a));		//向服務器傳送信息 
	write(sockfd,&b,sizeof(b));		
	read(sockfd,&a,sizeof(a));		//從服務器接收信息 
	printf("來自服務器的消息%d\n",a);
	close(sockfd);					//關閉連接 
	return 0;
}


 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章