📄 client.c
字号:
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<string.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<fcntl.h>
#include<unistd.h>
#include<netdb.h>
#define SERVPORT 2222
#define BACKLOG 8
int main(int argc,char *argv[])
{
//临时缓冲区
char buff[100];
int sin_size,numbytes;
//sock_fd:监听socket;client_fd:数据传输socket
int sockfd,client_fd;
//本地地址信息
struct sockaddr_in my_addr;
//客户端地址信息
struct sockaddr_in remote_addr;
struct hostent *he;
int fd,size;
char s[]="Linux Programmer!\n",buffer[80];
fd=open("/tmp/temp.txt",O_WRONLY|O_CREAT|O_TRUNC); //在/tmp下简历temp.txt文件,设置属性
write(fd,s,sizeof(s)); //将s[]内容写入文件
close(fd);
fd=open("/tmp/temp.txt",O_RDONLY);
size=read(fd,buffer,sizeof(buffer));
printf("%s",buffer);
//从输入的命令行第2个参数获取服务器的IP地址
he=gethostbyname(argv[1]);
//创建socket
if((sockfd=socket(AF_INET,SOCK_STREAM, 0))==-1)
{
perror("socket");
exit(1);
}
//printf("socket Success!,sockfd= %d \n",sockfd);
//ipv4
remote_addr.sin_family=AF_INET;
//服务器端口
remote_addr.sin_port=htons(SERVPORT);
//内核指定服务器IP地址
remote_addr.sin_addr=*((struct in_addr *)he->h_addr);
bzero(&(remote_addr.sin_zero),8);
//发起连接
if(connect(sockfd,(struct sockaddr *)&remote_addr,sizeof(struct sockaddr))==-1)
{
perror("connect");
exit(1);
}
printf("connect success!\n");
while(1)
{
//发送
if(send(sockfd,buffer,100,0)== -1)
{
perror("send");
exit(1);
}
//接收
if((numbytes=recv(sockfd,buffer,100,0))== -1)
{
perror("recv");
exit(1);
}
printf("result:%s\n",buffer);
break;
}
//通信结束
close(sockfd);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -