📄 client.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 + -