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

📄 client.c

📁 linux下用C编写的TCP/IP 数据传送程序
💻 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 + -