❶ linux Qt下,tcp文件传输

这个用不来着QT。QT是C++写的自,C++兼容C。我这倒是有C语言写的。你要的话把邮箱给我。我发给你。发给你的东西有很多其他的代码。有聊天程序,有传文件的程序(模拟scp)、还有shell。
你说 用getlp函数 得到的ip不对,可能是你选的连接类型是本地连接。用socket的时候你要用 AF_INET 而不是 AF_UNIX。

❷ Linux C系统编程中的文件传输问题:只能传送文本文件,不能传送二进制文件。(TCP+文件I/O实现)

下面这段是发送文件内容及其16进制编码的。

file = fopen("w:\\temp.dat","rb");
if(file)
{
buffer[0]=0;
char temp[64];
while(1)
{
r = fread(buffer,1,16,file);
buffer[r]=0;
int index=0;
for(index=0;index<r;index++)
{
sprintf(temp,"%02x ",(unsigned char)buffer[index]);
printf(temp);
send(AcceptSocket,temp,strlen(temp),0);
}
for(index=r;index<16;index++)
{
sprintf(temp," ");
printf(temp);
send(AcceptSocket,temp,strlen(temp),0);
}
for(index=0;index<r;index++)
{
if((unsigned char)buffer[index]>=0x20)
{
sprintf(temp,"%c",(unsigned char)buffer[index]);
printf(temp);
send(AcceptSocket,temp,strlen(temp),0);
}else
{
sprintf(temp,".");
printf(temp);
send(AcceptSocket,temp,strlen(temp),0);
}
}
sprintf(temp,"\r\n");
printf(temp);
send(AcceptSocket,temp,strlen(temp),0);
//send(AcceptSocket,buffer,r,0);
if (r<16) break;
}

printf("(end)\r\n");

fclose(file);
}