• 5129阅读
  • 3回复

有关网络通讯SOCKET的问题,哪位大侠能帮帮我,感激不尽 [复制链接]

上一主题 下一主题
离线lazy
 
只看楼主 倒序阅读 楼主  发表于: 2006-06-06
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
我是QT的新手,现在正在做QT网络通讯,服务器端程序如下
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <types.h>
#include <in.h>
#include <socket.h>
#include <wait.h>
#define SERVPORT 1234 /*服务器监听端口号 */
#define BACKLOG 10   /* 最大同时连接请求数 */

main()
{
    int sockfd,client_fd;           /*sock_fd:监听socket;client_fd:数据传输socket */
    struct sockaddr_in my_addr;   /* 本机地址信息 */
    struct sockaddr_in remote_addr; /* 客户端地址信息 */
  int sin_size;
  if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
  {
      perror("socket build error!");exit(1);
  }
  my_addr.sin_family=AF_INET;
  my_addr.sin_port=htons(SERVPORT);
  my_addr.sin_addr.s_addr=INADDR_ANY;
  //my_addr.sin_addr.s_addr=192.168.1.88;
  bzero(&(my_addr.sin_zero),8);
  if(bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))==-1)
    {
          perror("bind出错!");
          exit(1);
    }
  /*if(connect(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))==-1)
    {
          perror("connect出错!");
          exit(1);
    }*/
  if(listen(sockfd,BACKLOG)==-1)
    {
          perror("listen出错!");
          exit(1);
    }
    while(1)
    {
    sin_size=sizeof(struct sockaddr_in);
        if((client_fd=accept(sockfd,(struct sockaddr *)&remote_addr,&sin_size))==-1)
        {
              perror("accept出错");
              continue;
        }
        printf("received a connection from %s\n", inet_ntoa(remote_addr.sin_addr));
        if (!fork())   /* 子进程代码段 */
        {
              if (send(client_fd, "Hello, you are connected!\n", 26, 0)==-1)
              perror("send出错!");
              close(client_fd);
              exit(0);
        }
      close(client_fd);
    }
}

用一个WIN2000上运行的测试软件与之通讯,该软件应该是好使的,但是我的程序执行到accept函数时就飞了,请各位好心人帮我分析一下,是我的程序有问题,还是有什么地方处理不当,在此先行谢过!
[ 此贴被XChinux在2006-06-06 19:22重新编辑 ]
离线lazy
只看该作者 1楼 发表于: 2006-06-06
自己顶一下,快帮帮忙吧
离线jacklee
只看该作者 2楼 发表于: 2006-06-06
什么叫飞了?
离线wonme

只看该作者 3楼 发表于: 2006-06-16
QT网络通讯???   怎么不用qsocket?   我也不太懂 不过看起来你的程序是linux下的网络通信而不是qt的
快速回复
限100 字节
 
上一个 下一个