免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1252 | 回复: 1
打印 上一主题 下一主题

[C] socket只能发送无法接收 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-13 17:11 |只看该作者 |倒序浏览
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <signal.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
#include <pthread.h>


void myThread1(int socket_cmd)
{
        char TmpBuffer[1024];
        int n;
        while(1)
        {
                memset(TmpBuffer, 0, 1024);
//                if(read(socket_cmd, TmpBuffer, 1 > 0)
                if((n = (recv(socket_cmd, TmpBuffer, sizeof(TmpBuffer), 0))) > 0)
                {
                        printf("receive file\n";
                }
        }
       
}

int main()
{
        int socket_cmd;  
        int ret=0;
        pthread_t id1;
        int new_fd;
        socklen_t sin_size;
        int portcmd = 5555;   
        struct sockaddr_in server_cmd, client_cmd;
        new_fd = socket(AF_INET, SOCK_STREAM, 0);   
        char cmd[]="helloword\n";
        if(new_fd == -1)
        {
                printf("Create socket_cmd error\n";
                return 1;
        }

        bzero(&server_cmd, sizeof(server_cmd));          
        server_cmd.sin_family = AF_INET;   
        server_cmd.sin_addr.s_addr = htonl(INADDR_ANY);
        server_cmd.sin_port = htons(portcmd);   
        if(bind(new_fd,(struct sockaddr *)&server_cmd,sizeof(struct sockaddr))==-1)
        {
                perror("bind";
                return 1;
        }
        if(listen(new_fd,10)== -1)
        {
                perror("listen";
                return 1;
        }

        sin_size = sizeof(struct sockaddr_in);
        if((socket_cmd = accept(new_fd, (struct sockaddr *)&client_cmd, &sin_size))==-1)
        {
                perror("accept";
                exit(1);
        }
        if(fcntl(socket_cmd, F_SETFL, O_NONBLOCK) == -1)
        {
                perror("fcntl";
                exit(1);
        }

        ret = pthread_create(&id1, NULL, (void*)myThread1, (void*)socket_cmd);
        if (ret)
        {
                printf("Create pthread1 error!\n";
                return 1;
        }
#if 1
        while(1)
        {
                send(socket_cmd, cmd, strlen(cmd) + 1, 0);       
                sleep(2);
        }
#endif       

        pthread_join(id1, NULL);

        return 0;
}




用wsnet客户端与之相连,本程序发送可以,但是不能从wsnet客户接收数据,哪里出的问题

[ 本帖最后由 yass2an 于 2009-3-13 17:19 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-03-13 20:52 |只看该作者
顶一下,有明白的人帮忙看一下
收发究竟哪里出了问题,改怎么解决
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP