linux socket网络编程二 基于tcp

#-------------------------------------------------

# created by ChenXing 2012-11-03  success in the actual project
#-------------------------------------
//客户端:

/*  Make the necessary includes and set up the variables.  */

#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include<errno.h>

#define MAXLINE 5000

int main()
{
    int sockfd,server_sockfd,new_server_sockfd;
    int len,l;
    struct sockaddr_in address;
    struct sockaddr_in server_address;
    int result,server_len,addr_len;
    char recvline[4096], sendline[4096];
    char  buff[4000];
   
    char ch;

/*  Create a socket for the client.  */

    sockfd = socket(AF_INET, SOCK_STREAM, 0);
 

/*  Name the socket, as agreed with the server.  */

    address.sin_family = AF_INET;
    address.sin_addr.s_addr = inet_addr("192.168.0.101");
    address.sin_port = htons(10001);
    len = sizeof(address);
/*  Now connect our socket to the server's socket.  */

    result = connect(sockfd, (struct sockaddr *)&address, len);

    if(result == -1) {
        perror("oops: client3");
        exit(1);
    }
         


 /*  We can now read/write via sockfd.  */
 printf("send login msg to server: \n");  
   fgets(buff, 4096, stdin);   
   if( send(sockfd, buff, strlen(buff), 0) < 0)  
  {   
     printf("send msg error: %s(errno: %d)\n", strerror(errno), errno); 
     exit(0); 
   }    
 
 while(1){
      l=recv(sockfd, sendline, MAXLINE, 0); 
  if (l<0)
   continue;
  sendline[l] = '\0';   
      printf("msg from server = %s\n", sendline);

  printf("send  msg02  to server: \n");  
    fgets(buff, 4096, stdin);   
    if( send(sockfd, buff, strlen(buff), 0) < 0)  
   {   
      printf("send msg error: %s(errno: %d)\n", strerror(errno), errno); 
      exit(0); 
    }    

 

   }
   //close(server_sockfd);
 close(sockfd);
}

服务器

/*  Make the necessary includes and set up the variables.  */

#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdlib.h>
#include<errno.h>
#include <string.h>

#define MAXLINE 30

int main()
{
    int server_sockfd, client_sockfd;
    int server_len, client_len;
    int n,sockfd;
    struct sockaddr_in server_address;
    struct sockaddr_in client_address;
    char  buff[30];
    char  sendline[4096];

/*  Remove any old socket and create an unnamed socket for the server.  */

    server_sockfd = socket(AF_INET, SOCK_STREAM, 0);

/*  Name the socket.  */

    server_address.sin_family = AF_INET;
    server_address.sin_addr.s_addr = htonl(INADDR_ANY);
    server_address.sin_port = htons(10001);
    server_len = sizeof(server_address);
    bind(server_sockfd, (struct sockaddr *)&server_address, server_len);

/*  Create a connection queue and wait for clients.  */
    listen(server_sockfd, 5);
    if( (client_sockfd = accept(server_sockfd, (struct sockaddr*)NULL, NULL)) == -1)
    {       
        printf("accept socket error: %s(errno: %d)",strerror(errno),errno); 
    }  

    while(1){
           
        printf("server waiting\n");

     n = recv(client_sockfd, buff, MAXLINE, 0); 
     buff[n] = '\0';   
    printf("recv msg from client: %s\n", buff);

 /* return message */
 printf("send msg to client: \n");  
   fgets(sendline, 4096, stdin);   
   if( send(client_sockfd, sendline, strlen(sendline), 0) < 0)  
  {   
     printf("send msg error: %s(errno: %d)\n", strerror(errno), errno); 
     exit(0); 
   }
         printf("send successful\n");
    }     
        close(server_sockfd);
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值