客户端服务器多路聊天

时间:2017-08-11 16:59:20

标签: c sockets serversocket

我能够从客户端和服务器发送消息但是不断发送消息我把我的代码放在一个无限循环中但是在一次写入和读取之后它停止工作我没有得到任何错误但是当我输入内容时客户端终端它不向服务器发送任何内容,所以我该怎么办?

#include<stdio.h>
#include<string.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<error.h>
#include<sys/socket.h>
#define PORTNO 10200
int main()
{
    while(1)
    {
        int sockfd,newsockfd,portno,clilen,n=1;

    char buf[256]=" ",ch[256]=" ";

    struct sockaddr_in seraddr,cliaddr;

    int i,value;

    sockfd=socket(AF_INET,SOCK_STREAM,0);

    if(sockfd==-1)
    {
        perror("Socket Error"); 
    }   
    seraddr.sin_family=AF_INET;

    seraddr.sin_addr.s_addr=inet_addr("10.86.4.132");

    seraddr.sin_port=htons(10200);

    bind(sockfd,(struct sockaddr*)&seraddr,sizeof(seraddr));

    listen(sockfd,1);

    clilen=sizeof(clilen);

    newsockfd=accept(sockfd,(struct sockaddr*)&cliaddr,&clilen);
        if(newsockfd==-1)
    {
        perror("NEW SOCKET ERROR"); 
    }
    n=read(newsockfd,buf,sizeof(buf));
    if(n==-1)
    {
        perror("READ ERROR");   
    }
    if(strcmp(buf,"QUIT")==0)
    {
        exit(0);
    }    
    printf("CLIENT:");  
    puts(buf);

    printf("\n ENTER STRING \t");
    gets(ch);

    ch[strlen(ch)]='\0';
    strcpy(buf,ch);
    write(newsockfd,buf,strlen(ch));
    }       
    return 0;
} 

这是我的客户代码

#include<sys/types.h>
#include<sys/socket.h>
#include<stdio.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<stdlib.h>
#include<string.h>
#include<error.h>
int main()
{
    while(1)
    {
    int len,result,sockfd,n=1;
    struct sockaddr_in address;
    char ch[256]=" ",buf[256]=" ";
    sockfd=socket(AF_INET,SOCK_STREAM,0);
    if(sockfd==-1)
    {
        perror("Socket Error"); 
    }       
    address.sin_family=AF_INET;
    address.sin_addr.s_addr=inet_addr("10.86.4.132");
    address.sin_port=htons(10200);
    len=sizeof(address);

    result=connect(sockfd,(struct sockaddr*)&address,len);
    if(result==-1)
    {
        perror("\n CLIENT ERROR");
        exit(1);
    }
    int i=0;        
    printf("\n ENTER STRING \t");
    gets(ch);       
    ch[strlen(ch)]='\0';
    write(sockfd,ch,strlen(ch));
    printf("STRING:");

        n=read(sockfd,buf,sizeof(buf));
        if(n==-1)
        {
            perror("Read Error");
        }
        puts(buf);  
}
return 0;

}

0 个答案:

没有答案
相关问题