TCP传输文件的问题?疑惑比较多
要写一个文件传输程序,要求传输层采用TCP协议,网络层用IP协议,我看了几本书,仿照着写了个简单的程序
基本过程就是
发送端:加载套接字->创建监听的套接字->绑定套接字->监听套接字->接收数据包。
接收端:先加载套接字,然后创建套接字,直接连接服务器,发送数据包。
程序运行结果正确,但是我有很多问题不懂:
1 我在定义套接字的时候用socket(AF_INET,SOCK_STREAM,0),表明这是采用TCP连接,那在哪里定义采用IP协议呢?
2 我看到论坛里有个帖子说tcp有时会“粘包”,所以要自己定义包头,tcp不是可靠连接吗,怎么会粘包?
3 同样在论坛中看到要把tcp包拆包到ip层,我是不是也要这样做?
4 tcp协议或ip协议的数据包都有固定格式,我定义每次通过套接字传送文件中大小为1k字节的片断,是不是说事实上真正传送的不仅是1k,而是包含了协议头部等辅助信息的大于1k的信息。
4 我目前的程序是在广域网上测试,通过ip地址访问其他机器,如果换到小型局域网上(我老师说是只有几台机器的千兆网),程序需要改什么地方?
5 如果发送端采用多线程发送文件,接收端是不是必须要采用多线程来接收?
问题较多,望高手指点
上网比较困难,回帖有时不及时,望谅解