当前位置:  技术问答>linux和unix

用socket去connect后,recv和send都出错

    来源: 互联网  发布时间:2016-02-17

    本文导语:  我用Vmware装了个linux,用socket去connect我windows的一个通信server程序 connect没有报错,但recv和send都出错,说Transport endpoint is not connected之类的 但从代码可以看出,connect没有报错 代码是这样的,非常简单,希望高手指点. #includ...

我用Vmware装了个linux,用socket去connect我windows的一个通信server程序
connect没有报错,但recv和send都出错,说Transport endpoint is not connected之类的
但从代码可以看出,connect没有报错
代码是这样的,非常简单,希望高手指点.

#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  

#define PORT 56790
#define MAXDATASIZE 1024 

int sockfd; 
pthread_t recthread; 

void recmessage() 

    while(1) 
    { 
        int numbytes; 
        char buf[MAXDATASIZE]; 

        if((numbytes=recv(sockfd,buf,MAXDATASIZE,0))==-1) 
        { 
            perror("recv......"); 
            exit(1); 
        } 

        buf[numbytes]= ' '; 
        if(strcmp(buf,"exit")==0) 
        { 
            printf("Server is closed.n"); 
            close(sockfd); 
            exit(1); 
        } 
        printf("Server :%s.n",buf); 
    } 


int main() 

    struct hostent *he; 
    struct sockaddr_in their_addr; 
    if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1) 
    { 
        perror("socket"); 
        exit(1); 
    } 
    their_addr.sin_family=AF_INET; 
    bzero(&their_addr,sizeof(their_addr)); 

    their_addr.sin_port=htons(PORT); 
    their_addr.sin_addr.s_addr=inet_addr("192.168.1.77");

 
    bzero(&(their_addr.sin_zero),8); 
    if(connect(sockfd,(struct sockaddr*)&their_addr,sizeof(struct sockaddr))==-1) 
    { 
        perror("connect"); 
        exit(1); 
    }
    sleep(1);
    printf("socket id is %d",sockfd);  

     
    if((pthread_create(&recthread,NULL,(void *)recmessage,NULL))!=0) 
    { 
        printf("Create thread error!n"); 
        exit(1); 
    } 

    while(1) 
    { 
        char msg[MAXDATASIZE]; 
        scanf("%s",msg); 
        if(send(sockfd,msg,strlen(msg),0)==-1) 
        { 
            perror("send"); 
            close(sockfd); 
            exit(1); 
        } 
        if(strcmp(msg,"exit")==0) 
        { 
            printf("Byebye!n"); 
            close(sockfd); 
            exit(1); 
        } 
    } 
    return 0; 


|
        their_addr.sin_family=AF_INET;   
        bzero(&their_addr,sizeof(their_addr));   

        their_addr.sin_port=htons(PORT);   
        their_addr.sin_addr.s_addr=inet_addr( "192.168.1.77 "); 

  
        bzero(&(their_addr.sin_zero),8);   
=============
试试改为:
         bzero(&their_addr,sizeof(their_addr));   
         their_addr.sin_family=AF_INET;   
        their_addr.sin_port=htons(PORT);   
        their_addr.sin_addr.s_addr=inet_addr( "192.168.1.77"); 

    
 
 

您可能感兴趣的文章:

  • 我的socket出错,熟手进来帮帮忙呀------->急!!!
  • socket在linux下能用,在unix下出错
  • socket 非阻塞 出错
  • socket在read时出错,提示"No child processes"
  • socket读取中文数字混合字符出错
  • socket出错,大家帮忙检查一下
  • linux c socket http编程 返回http消息体出错!
  • 我在SCOUNIX上用C写了一段SOCKET程序,在SCOUNIX上运行正常,但是在SOLARIS上则出错,请问高手,这是为什么?
  • 一个简单的SOCKET服务端程序,生成执行文件的出错!
  • socket的connect老是出错!高手帮忙找一下原因
  • socket写的udp收包程序,编译老出错。。。
  • Socket中使用Serializable发送出错。
  • 帮我看下UNIX下用SOCKET实现文件传输哪出错了
  • Socket通信中怎样探测对方网络已经出错?
  • linux 下g++编译 书上的socket的例子出错,请帮忙看看?
  • 为甚么linux tcp socket 文件传输总是出错呢???
  • (100分)jdbc连接sqlserver 200出错.[SQLServer 2000 Driver for JDBC]Error establishing socket.
  • socket编程中accept()返回值出错?
  • linux 无线网卡socket编程出错
  • 用raw socket实现一个ICMP_ECHO的功能,出错了!
  • java命名空间java.net类socket的类成员方法: connect定义及介绍
  • socket编程,关于connect阻塞问题
  • socket编程,设为非阻塞,客户端怎么判断connect已经成功呢?
  • 关于Socket中connect连接host的超时问题,急!!!
  • 怎样使socket对客户端的connect直接拒绝?
  • 关于socket Connection time out的问题(ARM)
  • 能ping通socket connect不上
  • socket错误提示: Transport endpoint is not connected
  • [紧急求助]socket在read时提示Connection reset by peer错误
  • socket客户端connect服务端后,如何断开连接?
  • docker中文入门学习手册 iis7站长之家
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • socket编程:recv(...)函数问题求救
  • 求教!为何在socket编程中调recv函数无法阻塞?
  • socket tcp 关于 alarm() 和 recv() ?
  • 请问:SCO UNIX下SOCKET的recv返回-1,errno=9?在线等·····
  • socket编程 是recv阻塞
  • 关于socket的send(),recv()的问题.
  • socket中的疑问:read,write和send,recv的区别
  • solaris socket 非阻塞recv产生 EBADF 错误
  • (socket通信)poll提示有数据可读 recv却返回 EAGAIN
  • socket编程中的函数send和recv如何被信号中断?
  • 请教,socket中recv不能一次完全接收send发送的字节数?
  • 谁知道solaris对socket的recv和send函数是否是原子操作,谢谢!!
  • Linux下怎么用read或recv函数完全接收socket发来的数据?
  • socket通讯时如何为线程池分配Recv任务?
  • socket关闭后为什么recv不返回
  • 如果两个线程操作同一个Socket,一个线程recv,另一个send。这样会不会导致程序莫名其妙的退出
  • linux socket recv Resource temporarily unavailable
  • ##socket编程中send&recv的问题
  • 急!嵌入式linux下socket编程,recv()的问题:
  • 做socket程序,用recv,send这些函数好还是用fread,fwrite好?
  • java命名空间java.net类socket的类成员方法: socket定义及介绍
  • re socket编程中 ACCEPT返回的socket与原socket(他参数中的)端口号一样吗?
  • java命名空间java.nio.channels类socketchannel的类成员方法: socket定义及介绍
  • libevent2需要从socket读一段数据写入一个socket中,同时发送给另一个socket
  • java命名空间java.nio.channels类serversocketchannel的类成员方法: socket定义及介绍
  • socket 通讯开发包 Simple Sockets
  • java命名空间java.nio.channels类datagramchannel的类成员方法: socket定义及介绍
  • C++ Socket 库 C++ Sockets
  • java命名空间java.net类socket的类成员方法: getsendbuffersize定义及介绍
  • vc做的的socket应用和unix下socket?
  • java命名空间java.net类socket的类成员方法: getreceivebuffersize定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3