Linux下网络通信编程实现

服务器端
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <stdio.h>
#include <arpa/inet.h>

int main()
{
	//socket
	int cliFd = socket(PF_INET, SOCK_STREAM, 0);
	if(cliFd < 0)
	{
		perror("socket error!");
		return -1;
	}
	printf("socket ok!\n");
	//connect
	struct sockaddr_in servAddr = {0};
	servAddr.sin_family = PF_INET;
	servAddr.sin_port = htons(8888);
	servAddr.sin_addr.s_addr = inet_addr("192.168.31.100");

	int ret = connect(cliFd, (struct sockaddr *)&servAddr, sizeof(servAddr));
    if(ret < 0)
	{
		perror("connect error!");
		return -1;
	}
	printf("connect ok!\n");
	//send
	char buf[1024] = {0};
	printf("please input:");
	scanf("%s", buf);
	send(cliFd, buf, sizeof(buf), 0);
	//close
	close(cliFd);
	return 0;
}

终端
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <arpa/inet.h>
#include <unistd.h> 
int main()
{
	//socket
	int servFd = socket(PF_INET, SOCK_STREAM, 0);
	if(servFd < 0)
	{
		perror("socket error!");
		return -1;
	}
	printf("socket ok!\n");
	//bind
    struct sockaddr_in servAddr = {0};	
	servAddr.sin_family = PF_INET;
	servAddr.sin_port = htons(8888);
	servAddr.sin_addr.s_addr = inet_addr("192.168.31.100");
	int ret = bind(servFd, (struct sockaddr *)&servAddr, sizeof(servAddr));
	if(ret < 0)
	{
		perror("bind error!");
		return -1;
	}
	printf("bind ok!\n");
	//listen
	ret = listen(servFd, 10);
	if(ret < 0)
	{
		perror("listen error!");
		return -1;
	}
	printf("listening.....\n");
	//accept
	int connFd = accept(servFd, NULL, NULL);
	if(connFd < 0)
	{
		perror("accept error!");
		return -1;
	}
	printf("accept ok!\n");
	//recv
	char buf[1024] = {0};
	ret = recv(connFd, buf, sizeof(buf), 0);
    if(ret > 0)
	{
		printf("recv form client: %s\n", buf);
	}
	//close
	close(servFd);
	close(connFd);
	return 0;
}


猜你喜欢

转载自blog.csdn.net/yizhixiaoma/article/details/80436916