您的位置 首页 > 电脑系统

winsocket_Winsocket协议

1.开机后windows socket initialize failed怎么办

2.开机windows socket initialize failed 怎么办

3.win7系统显示 windows socket initialize failed怎么办

4.winsocket UDP “使用了与请求的协议不兼容的地址”错误

winsocket_Winsocket协议

意思就是:Windows操作系统下的网络编程接口初始化失败。

此类情况需要重装系统

建议你用”电脑店超级U盘启动盘制作工具V6.2(UEFI启动体验版)“制作U盘启动盘或者光盘启动盘进行操作系统的安装。这个软件还专门解决UEFI引导失败的问题,为了顺利安装系统,不会中途卡机和当机,,你必须先把你的所要安装系统的分区进行格式化,再安装系统。如果硬盘内有一两个系统恢复和保护性分区,它会阻止安装非本机OEM的系统;或者有前一次安装系统形成的引导分区,在安装系统过程中,都有可能导致安装失败,解决方法:就是彻底删除这些系统分区,并删除所有恢复性或保护性的小分区(一般大小为100--500M),再安装系统。

系统安装前,首先要下载一个操作系统镜像文件

可以在下面下载Windows各版本的操作系统,里面还有详细的电脑系统安装教程,可安装时参考

ghost系统基地 .ghost008 这是目前最好的,最全的。最丰富,最安全的操作系统下载网站,下载你所需系统镜像文件(一般格式为:ISO)。

系统安装方法1:

最简单的系统安装方法:通过DVD光驱直接安装:

用”电脑店超级U盘启动盘制作工具V6.1(UEFI启动体验版)“制作DVD系统安装盘,方法:安装好此软件,打开并运行,在显示的主功能界面上:

首先,选择并点击“ISO模式-支持UEFI启动”;其次,选择并点击:“浏览“或者”打开文件夹“,寻找并确认你想刻录(烧制)ISO文件;最后,点击”刻录光盘“,即可刻录(烧制)出你想要的系统安装盘。

另外也可以用“蓝宇电脑维护盘”(或者叫:“追梦人专业电脑维护盘超强版”)把镜像文件刻录(烧制)到DVD光盘,做成系统盘。方法:先运行:“蓝宇电脑维护盘”,进入:“追梦人专业电脑维护盘PE工具箱”,点击:”光盘优盘“选项,使用:”光盘映像工具UltraIOS“或者”深山红叶刻录软件“ 进行刻录(烧制)。

(注:”电脑店超级U盘启动盘制作工具V6.1(UEFI启动体验版)“和“蓝宇电脑维护盘”去百度搜索一搜既可以搜到)

系统安装盘做好后,开启需要安装系统的电脑,先设定第一顺位启动设备为CD/DVD(光盘或者光驱)启动(设置U盘启动也可以按照下面两种方式,只要是把DVD项改为USB或者U盘即可);

把光驱(CD/DVD光盘)设置为第一启动顺位设备的方法1:

开启电脑,根据开机的时候,刚一闪过的第一次开机画面,在屏幕下方显示的白色提示文字,一般是出现“DEL”,那么按下 “del(delete)”键;如果是别的,根据提示可以尝试按F2、F8、F10、F12等等,就可以进入BIOS 。因为各种型号的电脑根据主板的不同,BIOS设置也略有不同,你先在里面菜单里找到“BOOT”这一大项,然后进入细项,选择里面的,First Boot这个的意思就是电脑启动的第一引导驱动,就在这里选择(用上下箭头,或者屏幕下方有英文提示)CD-ROM/DVD-ROM.然后按F10保存后重新启动,当光驱里有可以支持的启动光盘时,会在屏幕上方显示:“start booting from cd”或者“start booting from dvd”等字样,此时立刻点回车键(Enter键)电脑就会先从光盘引导进入了。(特注:设定U盘为第一顺位启动设备的方法同上)

把光驱(CD/DVD光盘)设置为第一启动顺位设备的方法2:

开启电脑,根据开机第一个启动画面,在电脑最下方的显示的提示,不停地F9(也可能是F2或者F12),可进入快速启动设备选择项菜单,在菜单里选择:CD-ROM/DVD-ROM(“光盘启动”、“光驱启动”)也可进入光盘引导(进入步骤同方法1)(特注:设定U盘为第一顺位启动设备的方法同上)。

然后等待光驱运行,进入DVD光驱加载页面后(屏幕上会显示:“start booting from cd”或者“start booting from dvd”等字样),此时立刻点回车键(Enter键),即可进入系统安装。(安装过程基本是傻瓜式的,按提示步骤一步步执行即可,很简单,亦不在此赘述。)

系统安装方法2:

最流行的的系统安装方法:用U盘做成系统启动安装盘

具体方法:

准备好一个等于或者大于4GB的U盘,先完成格式化。

a、从电脑店U盘工具官方网站u.diannaodian (前面加:://)-下载”电脑店超级U盘启动盘制作工具V6.1(UEFI启动体验版)“。

b、运行程序之前请尽量关闭杀毒软件和安全类软件(本软件涉及对可移动磁盘的读写操作,部分杀软的误报可能会导致制作失败!)下载完成之后Windows XP系统下直接双击运行即可,Windows Vista或Windows7/8系统请点右键以管理员身份运行。

U盘启动安装盘的具体制作:

1. 默认模式:

默认模式1.1:打开主程序,插入U盘/SD卡等可移动设备,在磁盘列表里会自动列出当前电脑中所有的可移动磁盘的盘符、型号、容量等信息。

默认模式1.2:选择你要制作启动的可移动磁盘,启动模式USB-HDD或USB-ZIP可选,默认用USB-HDD模式。(chs模式主要针对某些不能检测的Bios,一般不需要勾选此项!如果你想把U盘剩余部分转成NTFS格式可以勾选NTFS选项,注意:格式化成NTFS会影响U盘启动部分功能的使用,除非需要存储超过4G的单文件,否则不建议勾选此项!)

默认模式1.3:尽量退出杀毒软件和安全类软件以免制作失败,点击“一键制作启动U盘”按钮,程序会提示是否继续,确认所选U盘无重要数据后点是开始制作.

(注意:使用电脑店U盘启动盘制作工具2.0以及之前版本制作过的U盘如果制作失败请先执行初始化U盘)

默认模式1.4:制作过程根据电脑配置和U盘芯片的不同耗时长短也不同,请耐心等待。制作完成后正确设置电脑BIOS即可从U盘启动了。为了验证U盘启动制作是否成功,可以运行模拟启动。

注:模拟启动仅供测试U盘启动是否制作成功,不可用于测试内部DOS和PE系统。

2. ISO模式:

ISO模式2.1:切换到ISO模式或者直接点击主程序左上角的ISO制作,程序会切换到ISO制作界面。

ISO模式2.2:点击“一键制作启动U盘”按钮后程序会在“D:\电脑店ISO\”文件夹下创建DND.ISO镜像。

ISO模式2.3:打开ISO模式的一键制作启动U盘,点击ISO模式里的按钮,按照图中推荐选项进行选择,最后点击写入按钮等待写入完成。(如需刻录光盘,点击“刻录光盘”按钮进行刻录操作!)

注:ISO模式同样支持将Win7或者Win8系统镜像写入U盘做成系统安装盘。

按以上步骤制作好U盘的系统安装盘,即可安装Win7或者Win8系统了。

小注:

把U盘设置为第一启动顺位设备的方法1:

开启电脑,根据开机的时候,刚一闪过的第一次开机画面,在屏幕下方显示的白色提示文字,一般是出现“DEL”,那么按下 “del(delete)”键;如果是别的,根据提示可以尝试按F2、F8、F10、F12等等,就可以进入BIOS 。因为各种型号的电脑根据主板的不同,BIOS设置也略有不同,你先在里面菜单里找到带有“BOOT”字样的这一大项,然后进入细项,选择里面的,First Boot:这个的意思就是电脑启动的第一引导驱动,就在这里选择(用上下箭头,或者屏幕下方有英文提示)”USB“字样的设备,然后按F10保存后重新启动,当电脑重启后,里有可以支持的U盘启动盘时,会在屏幕上面显示进入U盘的系统安装界面。

把U盘设置为第一启动顺位设备的方法2:

开启电脑,根据开机第一个启动画面,在电脑最下方的显示的提示,不停地F9(也可能是F2或者F12),可进入快速启动设备选择项菜单,在菜单里选择:”USB“字样的设备,也可进入U盘启动引导。(进入步骤同方法1)

通过U盘安装系统的过程基本是傻瓜式的,按照系统安装界面的提示步骤一步步执行即可,很简单,亦不在此赘述。)

如有疑问,请追问,必复!

如满意,请给我一个纳,谢谢!

开机后windows socket initialize failed怎么办

套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。

一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议根进行交互的接口。

套接字是通信的基石,是支持TCP/IP协议的路通信的基本操作单元。

可以将套接字看作不同主机间的进程进行双间通信的端点,它构成了单个主机内及整个网络间的编程界面。套接字存在于通信域中,通信域是为了处理一般的线程通过套接字通信而引进的一种抽象概念。

套接字通常和同一个域中的套接字交换数据(数据交换也可能穿越域的界限,但这时一定要执行某种解释程序),各种进程使用这个相同的域互相之间用Internet协议簇来进行通信。

Socket(套接字)可以看成是两个网络应用程序进行通信时,各自通信连接中的端点,这是一个逻辑上的概念。它是网络环境中进程间通信的API(应用程序编程接口),也是可以被命名和寻址的通信端点,使用中的每一个套接字都有其类型和一个与之相连进程。

通信时其中一个网络应用程序将要传输的一段信息写入它所在主机的 Socket中,该 Socket通过与网络接口卡(NIC)相连的传输介质将这段信息送到另外一台主机的 Socket中,使对方能够接收到这段信息。?

Socket是由IP地址和端口结合的,提供向应用层进程传送数据包的机制。

类型

1、数据报套接字

无连接套接字,使用用户数据报协议(UDP)。在数据报套接字上发送或接收的每个数据包都单独寻址和路由。数据报套接字不能保证顺序和可靠性,因此从一台机器或进程发送到另一台机器或进程的多个数据包可能以任何顺序到达或可能根本不到达。在数据报套接字上发送广播可能需要特殊配置。

为了接收广播数据包,数据报套接字不应该绑定到特定地址,尽管在某些实现中,当数据报套接字绑定到特定地址时也可能接收广播数据包。

2、流套接字

面向连接的套接字,使用传输控制协议(TCP)、流控制传输协议(SCTP) 或数据报拥塞控制协议(DCCP)。流套接字提供了无记录边界的有序且独特的无错误数据流,并具有用于创建和销毁连接以及报告错误的明确定义的机制。

流套接字以带外功能可靠地、有序地传输数据。在 Internet 上,流套接字通常使用 TCP 实现,以便应用程序可以使用 TCP/IP 协议在任何网络上运行。

3、原始套接字

允许直接发送和接收 IP 数据包,无需任何特定于协议的传输层格式。对于其他类型的套接字,根据选择的传输层协议(例如 TCP、UDP)自动封装有效载荷,并且套接字用户不知道与有效载荷一起广播的协议头的存在。从原始套接字读取时,通常包含标头。

从原始套接字传输数据包时,自动添加标头是可选的。

大多数套接字应用程序编程接口(API),例如基于Berkeley 套接字的那些,支持原始套接字。Windows XP于 2001 年发布,在Winsock接口中实现了原始套接字支持,但三年后,微软出于安全考虑限制了 Winsock 的原始套接字支持。

原始套接字用于与安全相关的应用程序,如Nmap。原始套接字的一个用例是在用户空间中实现新的传输层协议。

原始套接字通常在网络设备中可用,用于路由协议,例如Internet 组管理协议(IGMP) 和开放最短路径优先(OSPF),以及用于Internet 控制消息协议(ICMP) 等事情,由ping 实用程序。

以上内容参考?百度百科-套接字

开机windows socket initialize failed 怎么办

先来看看这个问题是什么样的:

今晚打开电脑,我什么都没干,电脑突然就出现了这个提示:windows socket initialize failed,意思应该是程序初始化失败。我没在意,就直接点了确定。没想到,就此不能上网了。

于是我用了各种方法想解决这个问题:

比如:重启了电脑,可是这个提示又出现了。我没敢点“确定”。就在提示没关的情况下打开网页,结果还是上不了网。

于是我检查了一下电脑右下角,本该显示上网的地方,是没有网络连接的标志的。

我想也许是驱动出了问题,于是想打开驱动精灵,没想到“驱动精灵”直接打不开……

此时,我就以为是了,所以用360卫士检查了一番,修复了一番,可惜没查出,一些小问题的修复也和网络没有关系,结果也没解决问题。

最后,我终于想到还是和网络有关,于是就用了“360断网急救箱”,这回终于解决问题了。他是怎么修复的不用管,只说步骤就好了。

打开360安全卫士-点击右下角“更多”

在左上角选择所有工具-往下翻到“断网急救箱”打开-点击“全面诊断”

等待系统自动诊断完毕,点击“立即修复”

一般来说,windows socket initialize failed的问题,第5步的修复是解决不了的,此时系统会提示“强力修复”。

请继续点击“强力修复”,此时系统会提示修复完重启才能正常运行,你可以点击修复完立即重启。

一般来说,重启后就能解决问题了,亲测如此哦!

步骤阅读

7

当然,还有一种做法,是要用到命令提示符的,XP系统下,可以直接找到“运行”,win10呢,就可以直接搜索它了。

方法:搜索cmd-输入netsh winsock reset-回车-重启就可以了。

方法虽然很简单,不过我想不学计算机的,一般人也记不住这个方法,所以就当看看吧。

win7系统显示 windows socket initialize failed怎么办

意思就是:Windows操作系统下的网络编程接口初始化失败。

此类情况需要重装系统

建议你用”电脑店超级U盘启动盘制作工具V6.2(UEFI启动体验版)“制作U盘启动盘或者光盘启动盘进行操作系统的安装。这个软件还专门解决UEFI引导失败的问题,为了顺利安装系统,不会中途卡机和当机,,你必须先把你的所要安装系统的分区进行格式化,再安装系统。如果硬盘内有一两个系统恢复和保护性分区,它会阻止安装非本机OEM的系统;或者有前一次安装系统形成的引导分区,在安装系统过程中,都有可能导致安装失败,解决方法:就是彻底删除这些系统分区,并删除所有恢复性或保护性的小分区(一般大小为100--500M),再安装系统。

系统安装前,首先要下载一个操作系统镜像文件

可以在下面下载Windows各版本的操作系统,里面还有详细的电脑系统安装教程,可安装时参考

ghost系统基地 .ghost008 这是目前最好的,最全的。最丰富,最安全的操作系统下载网站,下载你所需系统镜像文件(一般格式为:ISO)。

系统安装方法1:

最简单的系统安装方法:通过DVD光驱直接安装:

用”电脑店超级U盘启动盘制作工具V6.1(UEFI启动体验版)“制作DVD系统安装盘,方法:安装好此软件,打开并运行,在显示的主功能界面上:

首先,选择并点击“ISO模式-支持UEFI启动”;其次,选择并点击:“浏览“或者”打开文件夹“,寻找并确认你想刻录(烧制)ISO文件;最后,点击”刻录光盘“,即可刻录(烧制)出你想要的系统安装盘。

另外也可以用“蓝宇电脑维护盘”(或者叫:“追梦人专业电脑维护盘超强版”)把镜像文件刻录(烧制)到DVD光盘,做成系统盘。方法:先运行:“蓝宇电脑维护盘”,进入:“追梦人专业电脑维护盘PE工具箱”,点击:”光盘优盘“选项,使用:”光盘映像工具UltraIOS“或者”深山红叶刻录软件“ 进行刻录(烧制)。

(注:”电脑店超级U盘启动盘制作工具V6.1(UEFI启动体验版)“和“蓝宇电脑维护盘”去百度搜索一搜既可以搜到)

系统安装盘做好后,开启需要安装系统的电脑,先设定第一顺位启动设备为CD/DVD(光盘或者光驱)启动(设置U盘启动也可以按照下面两种方式,只要是把DVD项改为USB或者U盘即可);

把光驱(CD/DVD光盘)设置为第一启动顺位设备的方法1:

开启电脑,根据开机的时候,刚一闪过的第一次开机画面,在屏幕下方显示的白色提示文字,一般是出现“DEL”,那么按下 “del(delete)”键;如果是别的,根据提示可以尝试按F2、F8、F10、F12等等,就可以进入BIOS 。因为各种型号的电脑根据主板的不同,BIOS设置也略有不同,你先在里面菜单里找到“BOOT”这一大项,然后进入细项,选择里面的,First Boot这个的意思就是电脑启动的第一引导驱动,就在这里选择(用上下箭头,或者屏幕下方有英文提示)CD-ROM/DVD-ROM.然后按F10保存后重新启动,当光驱里有可以支持的启动光盘时,会在屏幕上方显示:“start booting from cd”或者“start booting from dvd”等字样,此时立刻点回车键(Enter键)电脑就会先从光盘引导进入了。(特注:设定U盘为第一顺位启动设备的方法同上)

把光驱(CD/DVD光盘)设置为第一启动顺位设备的方法2:

开启电脑,根据开机第一个启动画面,在电脑最下方的显示的提示,不停地F9(也可能是F2或者F12),可进入快速启动设备选择项菜单,在菜单里选择:CD-ROM/DVD-ROM(“光盘启动”、“光驱启动”)也可进入光盘引导(进入步骤同方法1)(特注:设定U盘为第一顺位启动设备的方法同上)。

然后等待光驱运行,进入DVD光驱加载页面后(屏幕上会显示:“start booting from cd”或者“start booting from dvd”等字样),此时立刻点回车键(Enter键),即可进入系统安装。(安装过程基本是傻瓜式的,按提示步骤一步步执行即可,很简单,亦不在此赘述。)

系统安装方法2:

最流行的的系统安装方法:用U盘做成系统启动安装盘

具体方法:

准备好一个等于或者大于4GB的U盘,先完成格式化。

a、从电脑店U盘工具官方网站u.diannaodian (前面加:://)-下载”电脑店超级U盘启动盘制作工具V6.1(UEFI启动体验版)“。

b、运行程序之前请尽量关闭杀毒软件和安全类软件(本软件涉及对可移动磁盘的读写操作,部分杀软的误报可能会导致制作失败!)下载完成之后Windows XP系统下直接双击运行即可,Windows Vista或Windows7/8系统请点右键以管理员身份运行。

U盘启动安装盘的具体制作:

1. 默认模式:

默认模式1.1:打开主程序,插入U盘/SD卡等可移动设备,在磁盘列表里会自动列出当前电脑中所有的可移动磁盘的盘符、型号、容量等信息。

默认模式1.2:选择你要制作启动的可移动磁盘,启动模式USB-HDD或USB-ZIP可选,默认用USB-HDD模式。(chs模式主要针对某些不能检测的Bios,一般不需要勾选此项!如果你想把U盘剩余部分转成NTFS格式可以勾选NTFS选项,注意:格式化成NTFS会影响U盘启动部分功能的使用,除非需要存储超过4G的单文件,否则不建议勾选此项!)

默认模式1.3:尽量退出杀毒软件和安全类软件以免制作失败,点击“一键制作启动U盘”按钮,程序会提示是否继续,确认所选U盘无重要数据后点是开始制作.

(注意:使用电脑店U盘启动盘制作工具2.0以及之前版本制作过的U盘如果制作失败请先执行初始化U盘)

默认模式1.4:制作过程根据电脑配置和U盘芯片的不同耗时长短也不同,请耐心等待。制作完成后正确设置电脑BIOS即可从U盘启动了。为了验证U盘启动制作是否成功,可以运行模拟启动。

注:模拟启动仅供测试U盘启动是否制作成功,不可用于测试内部DOS和PE系统。

2. ISO模式:

ISO模式2.1:切换到ISO模式或者直接点击主程序左上角的ISO制作,程序会切换到ISO制作界面。

ISO模式2.2:点击“一键制作启动U盘”按钮后程序会在“D:\电脑店ISO\”文件夹下创建DND.ISO镜像。

ISO模式2.3:打开ISO模式的一键制作启动U盘,点击ISO模式里的按钮,按照图中推荐选项进行选择,最后点击写入按钮等待写入完成。(如需刻录光盘,点击“刻录光盘”按钮进行刻录操作!)

注:ISO模式同样支持将Win7或者Win8系统镜像写入U盘做成系统安装盘。

按以上步骤制作好U盘的系统安装盘,即可安装Win7或者Win8系统了。

小注:

把U盘设置为第一启动顺位设备的方法1:

开启电脑,根据开机的时候,刚一闪过的第一次开机画面,在屏幕下方显示的白色提示文字,一般是出现“DEL”,那么按下 “del(delete)”键;如果是别的,根据提示可以尝试按F2、F8、F10、F12等等,就可以进入BIOS 。因为各种型号的电脑根据主板的不同,BIOS设置也略有不同,你先在里面菜单里找到带有“BOOT”字样的这一大项,然后进入细项,选择里面的,First Boot:这个的意思就是电脑启动的第一引导驱动,就在这里选择(用上下箭头,或者屏幕下方有英文提示)”USB“字样的设备,然后按F10保存后重新启动,当电脑重启后,里有可以支持的U盘启动盘时,会在屏幕上面显示进入U盘的系统安装界面。

把U盘设置为第一启动顺位设备的方法2:

开启电脑,根据开机第一个启动画面,在电脑最下方的显示的提示,不停地F9(也可能是F2或者F12),可进入快速启动设备选择项菜单,在菜单里选择:”USB“字样的设备,也可进入U盘启动引导。(进入步骤同方法1)

通过U盘安装系统的过程基本是傻瓜式的,按照系统安装界面的提示步骤一步步执行即可,很简单,亦不在此赘述。)

如有疑问,请追问,必复!

如满意,请给我一个纳,谢谢!

winsocket UDP “使用了与请求的协议不兼容的地址”错误

故障表现:最近网吧里的机子出现这样一个问题,浩方对战平台无法正常联机。CS游戏不使用浩方对战平台可以联机,使用浩方对战平台后则无法联机,并且出现如图二的提示。

windows socket initialize failed.

故障解析:检查浩方文件夹时,发现安装目录下有一个名字为wsock32.dll的文件,将这个文件删除后,浩方对战平台就可以正常联机了。系统重新启动后,浩方对战平台又无法正常联机了,浩方安装目录下的wsock32.dll的文件又出现了。运行其他游戏检测发现,中国游戏中心也无法联机,IE使用一段时间也会提示出错。个别网络游戏有时可以正常启动,有时无法正常启动。Wsock32.dll文件是Windows系统中的负责网络端口组建的文件,浩方对战平台无法正常联机,可以证明是该文件出现了问题。使用各种杀毒软件对该文件进行扫描时发现wsock32.dll文件已经感染了,因此部分网络游戏会出现无法运行的故障。在“开始”菜单的“运行”中输入“Sfc”命令,损坏的DLL文件会自动修复。同时,我们也可以将没有被感染的wsock32.dll文件复制过来,将损坏的文件覆盖。

故障点评:隐蔽的方法越来越多,单纯一种杀毒软件已经无法正确识别。为了安全,机器出现故障后,建议使用两种或两种以上的杀毒软件进行查毒,这样可以避免我们排除故障时走弯路。

我抄别人的。。。嘿嘿。

关键是recvfrom返回的客户端addrClient是不能作为服务器返回客户端的地址使用的,即在sendto中不能使用由recvfrom返回得到的客户端地址。

楼主将UDP通讯和TCP通讯搞混了,不过说实话这个是很正常的。当初我学的时候没一本书是把网络通信编程写清楚地,只能靠自己摸索。

socket可以理解为通信地址,它由协议,IP和端口组成。在UDP模式中,绑定的目的是要告诉操作系统,当网卡从外部接收到数据包时,操作系统就知道应该把这个数据包交给哪个应用程序。

具体是这样的,网卡总是知道自己的IP是什么,因此网卡接收到网线中的数据包时,会提取数据包的包头,里面含有的IP如果是网卡自己的IP,它就会把该数据包交给操作系统,如果不是就将该数据包丢弃,可以认为操作系统不知道有该数据包。操作系统接收到数据包后,会根据每个数据包包含的端口号,将该数据包发给不同的应用程序。操作系统怎么会知道哪个端口号对应哪个应用程序呢?这个就是要求应用程序使用bind函数,将自己的端口号告诉操作系统。因此,所谓的端口冲突就是指其他应用程序已经通过bind告诉了操作系统该端口被它使用了,因此另外的应用程序就不能使用该端口了,即bind肯定失败!

所以,bind肯定是由接受数据包的应用程序使用的,这样的应用程序就是服务器应用程序,也可以看到我们需要为bind提供IP和端口号。并且,当初我还在疑惑为什么会有一个INADDR_ANY的IP指定,似乎bind根本不需要IP啊,只要端口就可以了。仔细一想才明白,因为一台主机可能会有2个网卡。因此,主机可能会有两个IP,这样bind这个函数允许我们自由指定需要绑定到哪块网卡上的特定端口。也可以不指定,通过INADDR_ANY由操作系统为我们指定。譬如,13端口在第一块网卡中被占用了,我们就可以使用bind明确指定自己的应用程序接收来自第二块网卡13端口的数据包。

UDP编程中作为客户端发送数据时,是不需要指定自己的IP和端口的,因此无需使用bind绑定,直接在sendto指定服务器的IP和端口就可以了。但实际上发送数据时,操作系统还是需要使用客户端机器上的一个IP和端口号的,这个IP和端口号由操作系统指派,譬如在操作系统处理sendto时,它可以指派1005端口给UDP客户端,此时如果有另一个客户程序再使用bind注册该端口,就会失败了。但实际情况大家都知道,UDP数据包的发送是相当快的,这种冲突几乎不存在,因为数据包发送后,即数据包通过网卡发到了网线中,操作系统就认为发送成功了,该端口就会被操作系统收回,标记“未使用”。

总结一下,UDP服务器需要占用一个IP和一个端口号,且是固定的,是在调用了bind函数成功后便确定下来了。UDP客户端也需要使用一个IP和一个端口号,它们都是随机的,这次发送可能是第一块网卡,第二次可能是第二块网卡,端口也如此。发送后,该端口就被操作系统收回,因此客户端无法使用该端口接收来自服务器的数据包。

因此不能使用recvfrom的客户端的端口信息再调用sendto发送给客户端,因为客户端的电脑操作系统根本不会讲该数据包交给客户端应用程序。

以上用比较容易理解的概念介绍了下,其实精确说的话,很多事情不是操作系统做的,而是各种驱动程序完成的。具体怎么修改代码,楼主应该明白了吧,光改服务器端的代码,没用,客户端的代码也要改。这也是为什么UDP是不存在服务器,客户端之说的原因,因为任何一方给另一方发数据包,前提必须使另一方已经通过bind绑定了一个固定端口了。

热门文章