socket通信服务端绑定失败

laotousheng 2012-08-25 08:20:45
在root用户下可以绑定成功,但在普通用户下到绑定函数就报错 bind: Invalid or incomplete multibyte or wide character
这是为什么啊,我的程序中有问题么???谢谢你的回答!!!
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <stdio.h>
#include <errno.h>
#include "include.h"

/*服务器端套接字*/
int socketserver (char *pcPort)
{
printf("socket服务端开始\n");

/*变量定义*/
int iListen; /*监听套接字描述符*/
int iTransfer; /*数据传送套接字描述符*/
int iJudge = 0; /*存储返回值判定操作是否成功*/
int iIndex = 0; /*索引标记*/
int iMsgid; /*报村消息队列描述符*/
int iShmid;
int iLengthaddr = sizeof(struct sockaddr_in); /*存储地址长度*/
int iFor; /*for语句变量*/
int iRet;
struct sockaddr_in stLocaladdr; /*本机地址信息存放地址结构体*/
struct sockaddr stRemoteaddr; /*远端地址信息存放地址结构体*/
struct stClient stAccept; /*接收客户端发过来的信息*/
struct stServer stTemp;
struct stShmItem stWrite;

int iCounter = 0;



/*创建套接字*/
iListen = socket(AF_INET, SOCK_STREAM, 0); /*创建socket,互联网协议族,面向TCP协议联系*/
if(iListen == -1)
{
printf("socket创建失败\n");
return 0;
}
else
{
printf("socket创建成功\n");
printf("socket ID是 %d\n", iListen);
}


/*地址结构题初始化*/
bzero (&stLocaladdr, sizeof(stLocaladdr));
stLocaladdr.sin_family = AF_INET; /*socket使用TCP协议族*/
stLocaladdr.sin_port = htons(atoi(pcPort)); /*端口的字节顺序转换成网络顺序的字节*/
stLocaladdr.sin_addr.s_addr = htonl(INADDR_ANY);

printf("端转换为数字端口值为%d\n", atoi(pcPort));
printf("stLocaladdr.sin_port为%d\n", ntohs(stLocaladdr.sin_port));

/*绑定服务器地址、端口和socket */
iJudge = bind(iListen, (struct sockaddr*)&stLocaladdr, sizeof(stLocaladdr));
if(iJudge == -1)
{
printf("绑定本机地址信息出错\n");
perror("bind");
return 0;
}
else
{
printf("绑定地址成功\n");
printf("绑定端口为%d\n", htons(atoi(pcPort)));
printf("绑定IP地址为%ld\n", htonl(stLocaladdr.sin_addr.s_addr));
}


/*启用监听*/
iJudge = listen(iListen, BACKLOG); /*监听最大完成连接队列数为10*/
if(iJudge == -1)
{
printf("监听出错\n");
perror("listen");
}
else
{
printf("listenning......\n");
}

/*接受链接请求*/
while(1)
{

iTransfer = accept(iListen, &stRemoteaddr, &iLengthaddr);

if (iTransfer == -1)
{
printf("接受连接请求失败\n");
perror("accept");
continue;
}

if(!fork())
{
printf("多进程\n");
iCounter++;
}
}

close(iListen); /*关闭监听套接字*/
return 0;
}

...全文
348 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
寻找自我 2012-08-25
  • 打赏
  • 举报
回复
你用的是 1024以下的? 换大于1024的
Gloveing 2012-08-25
  • 打赏
  • 举报
回复
换一个端口试试?
是不是端口已经被别的程序占用?

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧