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

sokcet小问题,让大家见笑了

    来源: 互联网  发布时间:2016-08-18

    本文导语:  这是个很间的socket tcp通信,没有使用select模式,其中IP和端口号都已经写死了,问题是在服务器端,没有打印,它就接收不到数据,recv是个阻塞函数 这个问题,我原来好像遇到过,现在又遇到有点小郁闷,有谁知道...

这是个很间的socket tcp通信,没有使用select模式,其中IP和端口号都已经写死了,问题是在服务器端,没有打印,它就接收不到数据,recv是个阻塞函数
这个问题,我原来好像遇到过,现在又遇到有点小郁闷,有谁知道的啊,给我解答下,谢谢了
client:
#include     // for sockaddr_in
#include     // for socket
#include     // for socket
#include         // for printf
#include         // for exit
#include         // for bzero
#include 
#include 
int main(int argc , char** argv)
{
    int iclient_socket = socket(PF_INET,SOCK_STREAM,0);
    if(-1 == iclient_socket ) 
    {
        perror("create socket fail");
        return -1;
    }    
 
    struct sockaddr_in client_addr;
    bzero(&client_addr,sizeof(client_addr));
    client_addr.sin_family = AF_INET;
    client_addr.sin_addr.s_addr = htons(INADDR_ANY);
    client_addr.sin_port = htons(0);

    if( -1 == bind(iclient_socket,(struct sockaddr*)&client_addr,sizeof(client_addr)))
    {
        printf("Client Bind Port Failed!n"); 
     exit(1);
    }
    
    struct sockaddr_in server_addr;
    bzero(&server_addr,sizeof(server_addr));
    server_addr.sin_family = AF_INET;
    char chip[]="10.41.28.75";
    if( 0 == inet_aton(chip,&server_addr.sin_addr) ) 
    {
        printf("Server IP Address Error!n");
    exit(1);
    }
    server_addr.sin_port = htons(10242);
    socklen_t sock_length = sizeof(server_addr);
  
    if( 0 >  connect(iclient_socket,(struct sockaddr*)&server_addr,sock_length) )
    {
     printf("connect errorn");
    }
    else
    {
        printf("connect successn");
    }
    while(1)
    {
        char chbuffer[256] = {0};
        scanf("%s",chbuffer);
        ssize_t sendcount = send(iclient_socket,chbuffer,sizeof(chbuffer),0);
        if(  0 >  sendcount)
        printf("send errorn");
        else
{
    printf("send successn");
}
    }
   //close(iclient_socket); 
    return 0;
}


重点在server:
#include     // for sockaddr_in
#include     // for socket
#include     // for socket
#include         // for printf
#include         // for exit
#include         // for bzero
#include 
int main()
{
    int iserver_socket = socket(PF_INET,SOCK_STREAM,0);
    if( -1 == iserver_socket )
    {
        printf("create socket fail,erroNO:%d%s",errno,strerror(errno));
    }
    
    //bind socket
    struct sockaddr_in server_addr;
    bzero(&server_addr,sizeof(server_addr)); 
    server_addr.sin_family = AF_INET;
    server_addr.sin_addr.s_addr = htons(INADDR_ANY);
    server_addr.sin_port = htons(10242); 
    if( -1 == bind(iserver_socket,(struct sockaddr *)&server_addr,sizeof(server_addr)))
    {
        perror("bind error");
    }

    //listen
    if( -1 == listen(iserver_socket,1))
    {
        printf("listen fail,errorNO:%d",errno);
    }    
    
 struct sockaddr_in client_addr;
   int ilength = sizeof(client_addr);
   
   int icurrent_socket =accept(iserver_socket,(struct sockaddr *)&client_addr,(socklen_t *)&ilength);
if( -1 == icurrent_socket )
{
    printf("accept error,erroNO:%d",errno);
}
        else
{
    printf("------------>connect success%s%s%s

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问:java的sokcet怎么正确接受到c做的socket程序发出的流。


  • 站内导航:


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

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

    浙ICP备11055608号-3