linux socket聊天程序

socket.h

#include<stdio.h>                                                                                   
#include<pthread.h>
#include<time.h>
#include<sys/select.h>
#include<signal.h>
#include<sys/un.h>
#include<unistd.h>
#include<sys/uio.h>
#include<errno.h>
#include<pthread.h>
#include<string.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<sys/time.h>
#include<netinet/in.h>
#include<sys/wait.h>
#include<stdlib.h>
#include<netdb.h>
#include<arpa/inet.h>

client.c

#include "socket.h"

int main()
{
        int c_socket;
        int c_accept;
        int c_read;
        int backlog = 10;
        char mes[512],buffer[512],clientname[20];
        int len_c=sizeof(struct sockaddr);
        struct sockaddr_in c_sock;
        bzero(mes, sizeof(mes));
                                               
        c_socket=socket(AF_INET,SOCK_STREAM,0);
        if(c_socket==-1)
        {  
                printf("socket");
        }

       c_sock.sin_family=AF_INET;
       c_sock.sin_port=htons(5000);
       c_sock.sin_addr.s_addr=inet_addr("127.0.0.1");

      if((connect(c_socket, (struct sockaddr*)& c_sock, len_c)) == -1)
      {
               printf("connect!");
      }

      while(fgets(mes, sizeof(mes), stdin) != NULL)
     {
           write(c_socket, mes, sizeof(mes));
           read(c_socket, buffer, sizeof(buffer));
           printf("%s",buffer);
           memset(buffer,512,0);
     }
}
 

server.c

#include "socket.h"

int main()
{
        int c_socket;
        int c_accept;
        int c_read;
        int backlog = 10;
        char mes[512],buffer[512],clientname[20];
        int len_c=sizeof(struct sockaddr);
        struct sockaddr_in c_sock;
        bzero(mes, sizeof(mes));
       
        c_socket=socket(AF_INET,SOCK_STREAM,0);
        if(c_socket==-1)
        {  
                printf("socket");
        }

        c_sock.sin_family=AF_INET;
        c_sock.sin_port=htons(5000);
        c_sock.sin_addr.s_addr=inet_addr("127.0.0.1");

        if((bind(c_socket, (struct sockaddr*)& c_sock, len_c)) == -1)
        {
                printf("bind!");
        }

        if((listen(c_socket, backlog)) == -1)
        {
                printf("listen");
        }

        for( ; ;)
        {
                if((c_accept = accept(c_socket, (struct sockaddr*)& c_sock, &len_c)) == -1)
                {
                        printf("accept");
                }

               
                while((c_read = read(c_accept, mes, sizeof(mes))) > 0)
                        write(c_accept, mes, c_read);

        }

}  

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值