用同一个UDP Socket来接收和发送数据,合理吗?

19901011 2003-11-27 09:22:33
用同一个UDP Socket同时来收发!这样做与分开两个Socket有比较大的区别吗?
主要用来发音视频数据!
...全文
509 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tob 2003-11-27
  • 打赏
  • 举报
回复
如果你是想跨两个不同的局域网,只能用一个socket(分开收不到的)
如果你是做局域网的通信,可以采用两个socket(效率高,代码清晰)
19901011 2003-11-27
  • 打赏
  • 举报
回复
好,测试一下吧!
xiaohyy 2003-11-27
  • 打赏
  • 举报
回复
建议分开,提高效率
danfeng 2003-11-27
  • 打赏
  • 举报
回复
我的建议是 音视频数据分开发送
用2个socket 一个负责收发音频数据 一个负责收发视频数据
再分细了就没有什么意思了 socket本身就是双工的
19901011 2003-11-27
  • 打赏
  • 举报
回复
up
sevencat 2003-11-27
  • 打赏
  • 举报
回复
我有一个不怎么好的解决方案。

一个套接字专门来接收。

另外一个开原始套接字,专门发送,发送的时候把端口设为你第一个套接字的端口。这样从外面看起来就好像你一个端口在同时发送和接收了。
TCP网络通信程序设计与实现 摘要: 目前,基于TCP/IP协议的网络得到了普及和飞速的发展,Windows下的网络程序越来越 显得重要。利用TCP/IP协议提供的编程接口———Socket(套接字)可以开发出TCP/IP应用程 序。正确的使用WindowsSocket,就可使得不同地址下的进程得以在Windows环境下顺利进 行各种网络通信,因此研究WinSock更有意义。而基于TCP/IP协议网络环境下的应用程序 是通过客户机/服务器(C/S)作用方式模式在网络(应用)编程界面实现的。本次实验采用 java语言设计一个基于C/S模式的TCP网络通讯程序。实现客户端与服务器端之间的数据 传输。 关键词:TCP/IP 网络通信 java C/S(client/server)模式 1引言 计算机网络通信是以计算机为信息接收终端,融合了计算机网络技术的通信方式。计 算机网络通信顺畅的重要保障就是网络建设。同时,网络建设也是计算机应用普及的基本 条件,是推动经济社会发展的根本。因此,了解计算机网络知识及网络编程技巧对于IT技 术人员是必备技术之一。 2 基础理论和技术 2.1网络基础知识 网络上的计算机要互相通信,必须遵循一定的协议。目前使用最广泛的网络协议是I nternet上所使用的TCP/IP协议。 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地 确定Internet上的一台主机。而TCP层则提供面向应用的可靠的或非可靠的数据传输机制 ,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。 网络编程主要解决两大问题:(1)如何准确的定位网络上一台或多台主机 (2)找到主机后如何可靠高效的进行数据传输。 目前较流行的网络编程模型是客户机/服务器(C/S)结构。即通信双方一方作为服务 器等待客户提出请求并予以响应。客户则在需要服务时向服务器提出申请。服务器一般 作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响 应该客户,同时自己继续监听服务端口,使后来的客户也能及时得到服务。 IP地址:标识计算机等网络设备的网络地址,由四个8位的二进制数组成,中间以小数点 分隔。 比如166.111.136.3 , 166.111.52.80 主机名(hostname):网络地址的助记名,按照域名进行分级管理。 端口号(port number):网络通信时同一机器上的不同进程的标识。 服务类型(service):网络的各种服务。   在Internet上IP地址和主机名是一一对应的,通过域名解析可以由主机名得到机器的IP ,由于机器名更接近自然语言,容易记忆,所以使用比IP地址广泛,但是对机器而言只有 IP地址才是有效的标识符。 光用主机名或IP地址来标识这么多个进程显然是不够的,只有通过主机名或IP地址和端口 号的组合才能唯一的确定网络通讯中的对象:进程。服务类型是那些已经被TCP/IP协议 标准化的在TCP应用层上的应用,一般都是网络服务器(软件)。可以编写自己的基于网 络的服务器,但都不能被称作标准的服务类型。 两类传输协议:TCP/UDP 在TCP/IP的传输层同时存在TCP和UDP两个协议。 TCP(Tranfer Control Protocol): 一种面向连接(可靠)的传输控制协议。通过TCP协议传输,得到的是一个顺序、无差错的 数据流。发送方和接收方成对的两个socket之间必须建立连接,以便在TCP协议的基础上 进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起 来,它们就可以进行双向数据传输,双方都可以进行发送或接收操作。 UDP(User Datagram Protocol): 一种无连接(不可靠)的用户数据报协议,每个数据报都是一个独立的信息,包括完整的 源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地, 到达目的地的时间以及内容的正确性都是不能被保证的。 比较TCP\Datagram: TCP——可靠,传输大小无限制,但是需要连接建立时间,差错控制开销大。 UDP——不可靠,差错控制开销较小,传输大小限制在64K以下,不需要建立连接。 TCP虽然有诸多优点,但是也有缺点:TCP传输的效率不如UDP高,对数据内容正确性的检验 要占用计算机处理时间和网络带宽,此外在许多应用中并不需要保证严格的传输可靠性, 比如视频会议系统,这种情况下显然使用UDP会更合理一些。 2.2 java网络编程技术 Java语言是在网络环境下诞生的,所以Java语言虽然不能说是对于网络编程的支持最好 的语言,但是必须说是一种对于网络编程提供良好支持的

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧