TCP 套接字测试

127 阅读1分钟

服务端

#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
#define PORT 3339
int main()
{
   char *sendbuf="thanks";
   char buf[256];
   int s_fd,c_fd;
   int s_len,c_len;
   struct sockaddr_in s_addr;
   struct sockaddr_in c_addr;
   s_fd=socket(AF_INET,SOCK_STREAM,0);
   s_addr.sin_family=AF_INET;
   s_addr.sin_addr.s_addr=htonl(INADDR_ANY);
   s_addr.sin_port=PORT;
   s_len=sizeof(s_addr);
   bind(s_fd,(struct sockaddr *) &s_addr,s_len);
   listen(s_fd,10);
while(1)
  {
   printf("please wait a moment!]n");
   c_len=sizeof(c_addr);
   c_fd=accept(s_fd,(struct sockaddr *) &c_addr,(socklen_t *__restrict)&c_len);
   recv(c_fd,buf,256,0);
   buf[sizeof(buf)+1]="\0";
   printf("receieve message:\n%s\n",buf);
   send(c_fd,sendbuf,sizeof(sendbuf),0);
   close(c_fd);
  }  
  #
}

客户端

#include<sys/types.h>
#include<sys/socket.h>
#include<stdio.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
#define PORT 80
int main()
{
   int sockfd;
   int len;
   struct sockaddr_in addr;
   int newsockfd;
   char *buf="come on";
   int len2;
   char rebuf[40];
   sockfd=socket(AF_INET,SOCK_STREAM,0);
   addr.sin_family=AF_INET;
   addr.sin_addr.s_addr=htonl(INADDR_ANY);
   addr.sin_port=PORT;
   len=sizeof(addr);
   newsockfd=connect(sockfd,(struct sockaddr *) &addr,len);
   if(newsockfd==-1){
     perror("连接失败!");
     return 0;
   }
   len2=sizeof(buf);
   send(sockfd,buf,len2,0);
   sleep(10);
   recv(sockfd,rebuf,256,0);
   rebuf[sizeof(rebuf)+1]="\0";
   close(sockfd);
   return 0;
  
}