⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.c

📁 linux 下简单的网络通信例子(包括客户端和服务端源文件)。
💻 C
字号:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
#define filesize 2048
int selectprotocol()
{
	int p;
	while(1)
	{
		printf("select protocol\n");
		printf("put in 0(tcp) or 1(udp)\n");
		scanf("%d",&p);
		if(p==0)
			return 0;
		else if(p==1)
			return 1;
		else 
		{
			printf("error! select protocol again!");
			continue;
		}
	}
}

void tcpconnection()
{
		int fd;
		struct sockaddr_in address;
		int address_len;
		int rtval;
		char *data = "Client to Server string!\n";
		char file[filesize];
		char filename[200];
		int len;

		//建立套接口
		fd = socket(AF_INET, SOCK_STREAM, 0);

		//联接
		address.sin_family = AF_INET;
		address.sin_addr.s_addr = inet_addr("127.0.0.1");
		address.sin_port = htons(1234);
		address_len = sizeof(address);

		rtval = connect(fd, (struct sockaddr *)&address, address_len);
		if(rtval == -1) exit(1);
		filename[0]='m';
		//printf("Put in filename\n");
                //scanf(filename);
		printf("%s  ",filename);	
		//发送数据
		send(fd,filename,strlen(filename),0);
		printf("has been sent! \n" );

		//接收数据
		len = read(fd,file,filesize);
		printf("received:%d bytes\n %s \n",len, file);

		printf("END of file\n");
		//关闭
		close(fd);
}

void udpconnection()
{
	int fd;
		struct sockaddr_in address;
		int address_len;
		char line[filesize];
		int n;

		//建立套接口
		fd = socket(AF_INET, SOCK_DGRAM, 0);//AF_INET和SOCK_DGRAM的组合对应UDP协议

		//联接
		bzero(&address, sizeof(address));
		address.sin_family = AF_INET;
		address.sin_addr.s_addr = inet_addr("127.0.0.1");
		address.sin_port = htons(1234);
		address_len = sizeof(address);
  		
		//发送数据
		sendto(fd, "m",200, 0,(struct sockaddr *)&address, sizeof(address)); 

		//接收数据
		n=-1;
		n = recvfrom(fd, line, filesize, 0, NULL, NULL);
		if(n<0)
		{
			printf("receive error\n");
			exit(1);
		}
		line[n]='\0';
		printf("received %d bytes \n %s \n",n,line);
		printf("END of file\n");
}

int main()
{
	int protocol=selectprotocol();
   	if(protocol==0)
		tcpconnection();
	else if(protocol==1)
		udpconnection();
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -