具体情况是这样的:
我用.net写了个client,在linux下用c语言写了server,但是发现client发送时函数要求发送的是byte[],而linux我用的char[] buffer接收的,打印出来是错误的结果。应该怎么解决这个问题?(尽量具体一点,谢!)
我用.net写了个client,在linux下用c语言写了server,但是发现client发送时函数要求发送的是byte[],而linux我用的char[] buffer接收的,打印出来是错误的结果。应该怎么解决这个问题?(尽量具体一点,谢!)
windows和linux(unix)间在处理流需要倒序。
///////window中c#写的客户端:
private void button1_Click(object sender, EventArgs e)
{
Byte[] bytee = new Byte[1024];
string send = richTextBox1.Text+"\r\n";
bytee = System.Text.Encoding.BigEndianUnicode.GetBytes(send.ToCharArray());
sock.Send(bytee, bytee.Length, 0);
}////////linux端:
while(1)
{
new_fd = accept(s_fd,NULL,NULL);
if(new_fd < 0)
{
printf("Accept Error : %s!!\n",strerror(errno));
}
if(!(pid = fork()))
{
printf("proc:%d\n",getpid());
close(s_fd);
char buffer[1024];
bzero(buffer,1024);
while(1) {
n = read(new_fd,buffer,1024);
if(!n || !strcmp(buffer,"quit"))
{
break;
}
buffer[n] = 0;
printf("%s\n",buffer);
}
close(new_fd);
exit(0);
}
else if(pid < 0)
printf("Fork Error : %s!!\n",strerror(errno));
else
{
close(new_fd);
}
}
改成这样试试看//默认的最大长度为8192,系统会自动拆分的
byte[] strByteArr = System.Text.Encoding.Default.GetBytes(msg);
sock.SendByteArr(strByteArr);
sock.SendByteArr(new byte[1] { 0 });