当前位置: 技术问答>linux和unix
操作系统大作业 socket 传递档案
来源: 互联网 发布时间:2017-01-14
本文导语: 用Linux写一个程式,完成两项功能: 1.Create two child processes,两者之间用socket传输一个100MB大小的档案。 2.将环境换成两台不同机器 process之间的File Transfer。 我有程式可以传递字串,请问怎样改写,可以实现...
用Linux写一个程式,完成两项功能:
1.Create two child processes,两者之间用socket传输一个100MB大小的档案。
2.将环境换成两台不同机器 process之间的File Transfer。
我有程式可以传递字串,请问怎样改写,可以实现以上两种功能。
第一个最好用struct~
向各位大神求解了,我是第一次接触socket完全不了解
1.Create two child processes,两者之间用socket传输一个100MB大小的档案。
2.将环境换成两台不同机器 process之间的File Transfer。
我有程式可以传递字串,请问怎样改写,可以实现以上两种功能。
第一个最好用struct~
向各位大神求解了,我是第一次接触socket完全不了解
|
第一的功能:
(1)你既然有了传字串的程序,那么你可以将100M的档案依次读到你的字串里。这里可以用一个循环。比如一次读1000字节数据,然后用你的程序发送出去。
(2)发送过程可以改为为使用socket,往本机IP地址和一个固定的端口号发送UDP包。
(3)另外一个进程建立socket接收固定端口的数据,这样就可以实现两个进程之间的socket通讯了。
第二个功能。
把发送者进程的目的IP地址,改为另一台机器的IP地址就可以了。你可以把IP地址通过参数的形式传到程序里,这样你一个程序就可以完成两个功能了。
(1)你既然有了传字串的程序,那么你可以将100M的档案依次读到你的字串里。这里可以用一个循环。比如一次读1000字节数据,然后用你的程序发送出去。
(2)发送过程可以改为为使用socket,往本机IP地址和一个固定的端口号发送UDP包。
(3)另外一个进程建立socket接收固定端口的数据,这样就可以实现两个进程之间的socket通讯了。
第二个功能。
把发送者进程的目的IP地址,改为另一台机器的IP地址就可以了。你可以把IP地址通过参数的形式传到程序里,这样你一个程序就可以完成两个功能了。
|
可以试着用用sendfile,或者模拟sendfile做mmap映射,而不是做I/O读取。
不必担心网卡满时EAGAIN或者写出量小于请求量之类的问题,因为sendfile内部已经做好了这个情况的处理。