关于系统移植出现的问题hp-unix->linux
有一个非常棘手的问题,请教各位老大。
我现在写了一个大致这样的流程的程序:
main()
{
while(1)
{
监听消息队列;
if(取到消息)
{
if(fork()>0) return;//父进程返回继续监听
else //fork()=0
创建socket();
connect()服务器端;
send();
recv();
close();
}
}
}
这个程序在hp机器上运行正常,现在我移植到linux机器上,就发现不能正常进行socket通讯了,经测试,子进程会停止在send()处,而此时我用ps查看进程,子进程已经没有了,不知何故?
问题点数:50、回复次数:5Top
1 楼YanDong_8212(谢科)回复于 2006-02-16 12:58:30 得分 10
在网络通信方面两者没什么大的区别。
你那个流程好象有问题吧,else好象少了一个{},仔细检查一下和你hp-unix上的不同Top
2 楼morpheus1977()回复于 2006-02-16 13:20:57 得分 10
贴上详细的code吧。 socket在hp和linux的code应该可以通用的。Top
3 楼xiaoxiaoku()回复于 2006-02-16 19:46:59 得分 0
刚刚跟踪了程序发现connect后errno=84,查了下错误解释是Invalid or incomplete multibyte or wide character
我的socket代码如下,不知在linux9平台下是否有问题
struct sockaddr_in m_sin;
int m_sckid;
m_sckid = socket(AF_INET, SOCK_STREAM, 0);
m_sin.sin_family = AF_INET;
m_sin.sin_port = htons((unsigned short)nPort);
m_sin.sin_addr.s_addr = inet_addr(pszAddr);
connect(m_sckid, (struct sockaddr *)&(m_sin), sizeof(m_sin));Top
4 楼morpheus1977()回复于 2006-02-17 14:35:51 得分 30
connect的返回值是多少? 如果不是-1,errno的值没有参考价值。Top
5 楼xiaoxiaoku()回复于 2006-02-17 15:03:15 得分 0
谢谢大家帮忙参考。问题已经找到,不在这段代码中,是我程序其他地方一个字符数组越界造成的。Top




