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 如果发送端采用多线程发送文件,接收端是不是必须要采用多线程来接收?
问题较多,望高手指点
上网比较困难,回帖有时不及时,望谅解
基本过程就是
发送端:加载套接字->创建监听的套接字->绑定套接字->监听套接字->接收数据包。
接收端:先加载套接字,然后创建套接字,直接连接服务器,发送数据包。
程序运行结果正确,但是我有很多问题不懂:
1 我在定义套接字的时候用socket(AF_INET,SOCK_STREAM,0),表明这是采用TCP连接,那在哪里定义采用IP协议呢?
2 我看到论坛里有个帖子说tcp有时会“粘包”,所以要自己定义包头,tcp不是可靠连接吗,怎么会粘包?
3 同样在论坛中看到要把tcp包拆包到ip层,我是不是也要这样做?
4 tcp协议或ip协议的数据包都有固定格式,我定义每次通过套接字传送文件中大小为1k字节的片断,是不是说事实上真正传送的不仅是1k,而是包含了协议头部等辅助信息的大于1k的信息。
4 我目前的程序是在广域网上测试,通过ip地址访问其他机器,如果换到小型局域网上(我老师说是只有几台机器的千兆网),程序需要改什么地方?
5 如果发送端采用多线程发送文件,接收端是不是必须要采用多线程来接收?
问题较多,望高手指点
上网比较困难,回帖有时不及时,望谅解
...全文
相关推荐
C# TCP 通信(数据、文件的传输)
这是我用C#写的一个TCP协议下通信的实例,可以实现多客户通信、数据、文件的传输等功能。。。
TCP协议 TCP 文件传输 大文件传输
服务器:设置IP 端口,监听,连接,传输文件名字(转2进制),传输文件(2进制),结束,关闭tcpListener 客户端:设置IP 端口,连接,接受文件名字,接受文件,写文件,结束,关闭tcpListener
TCP文件传输实现
这里面是很简单的两个控制台程序。主要是为了搞懂和熟悉网络TCP协议文件传输的基础知识!
C++实现的TCP协议的文件传输
用C++实现的TCP协议的文件传输代码,代码简单明了,即下即用
QT实现基于TCP协议的文件传输
该段代码用QT实现了基于TCP协议的文件传输,主要用于学习


网络编程

