没有合适的资源?快使用搜索试试~ 我知道了~
Socket编程指南及示例程序
4星 · 超过85%的资源 需积分: 9 14 下载量 12 浏览量
2011-05-16
15:45:16
上传
评论
收藏 89KB DOC 举报
温馨提示
试读
20页
在一些常用的编程技术中,Socket网络编程可以说是最简单的一种。而且Socket编程需要的基础知识很少,适合初学者学习网络编程。目前支持网络传输的技术、语言和工具繁多,但是大部分都是基于Socket开发的,虽说这些“高级”的网络技术屏蔽了大部分底层实现,号称能极大程度的简化开发,而事实上如果你没有一点Socket基础,要理解和应用这些技术还是很困难的,而且会让你成为“半瓢水”。
资源推荐
资源详情
资源评论
Socket 编程指南及示例程序
1 前言
在一些常用的编程技术中, 网络编程可以说是最简单的一种。而且 编程需要的
基础知识很少,适合初学者学习网络编程。目前支持网络传输的技术、语言和工具繁多,但是
大部分都是基于 开发的,虽说这些“高级”的网络技术屏蔽了大部分底层实现,号称能极
大程度的简化开发,而事实上如果你没有一点 基础,要理解和应用这些技术还是很困
难的,而且会让你成为“半瓢水”。
深有感触的是当年我学习 的时候,由于当时各方面的基础薄弱,整整啃了半年书,最
终还是一头雾水。如果现在让我带一个人学 ,我一定会安排好顺序:首先弄清 语
法;然后是 编译环境或者 的用法;接下来学习一些网络基础知识;然后是
编程;这些大概要花费 、 个月。有了这些基础学习 一周即可弄懂,两个月就可以
基于 进行开发了。
好了,说了半天其实中心思想就一个, 很简单,很好学!如果你会 或者 ,
又懂一点点网络基础如 和 的机制,那么你看完本文就可以熟练进行 开发了。
2 Socket 简介(全文摘抄)
(本节内容全部抄自网络,不保证正确性,有兴趣的可以看看!)
年代初,美国政府的高级研究工程机构()给加利福尼亚大学 分校提供了
资金,让他们在 操作系统下实现 协议。在这个项目中,研究人员为 网络
通信开发了一个 (应用程序接口)。这个 称为 接口(套接字)。今天,
!" 接口是 网络最为通用的 ,也是在 "" 上进行应用开发最为通用的
。
# 年代初,由 $%&' 联合了其他几家公司共同制定了一套 (( 下的网络编程接口,
即 (%)*&& 规范。它是 & 的重要扩充,主要是增加了一些异步函数,
并增加了符合 (%)*& 消息驱动特性的网络事件异步选择机制。((!" 规范
是一套开放的、支持多种协议的 (%)*& 下的网络编程接口。从 +##+ 年的 +, 版到 +##-
年的 .,, 版,经过不断完善并在 、$%&'、/、0、'%1、2 等公司
的全力支持下,已成为 (%)*& 网络编程的事实上的标准。目前,在实际应用中的
((!" 规范主要有 +,+ 版和 ., 版。两者的最重要区别是 +,+ 版只支持
协议,而 ., 版可以支持多协议。., 版有良好的向后兼容性,任何使用 +,+ 版的源代码,二
进制文件,应用程序都可以不加修改地在 ., 规范下使用。
!" 实际在计算机中提供了一个通信端口,可以通过这个端口与任何一个具有 !"
接口的计算机通信。应用程序在网络上传输,接收的信息都通过这个 !" 接口来实现。在
应用开发中就像使用文件句柄一样,可以对 !" 句柄进行读,写操作。
3 再说两句
网上很多文章对于 的来龙去脉有如教科书一般的精准。但是涉及具体编程技术就往往
被 等集成开发环境所毒害了,把 (%)*&3!、$4、、多线程、55 以及编译
链接等等技术搅合在一起煮成一锅夹生饭。
既然要学习 ,就应该用最简单直白的方式把 的几个使用要点讲出来。我认为程
序员最关心的有以下几点,按照优先级排列如下:
+, 的机制是什么?
., 用 写 需要什么头文件、库文件、55,它们可以由谁提供,安装后
一般处于系统的哪个文件夹内?
, 编写 程序需要的编程基础是什么?
, 库内最重要的几个函数和数据类型是什么?
-, 两个最简单的例子程序;
6, 一个贴近应用的稍微复杂的 应用程序。
我将一一讲述这些要点,并给出从简到繁,从朴素到花哨的所有源代码以及编译链接的命令。
4 Socket 的机制是什么?
我们可以简单的把 理解为一个可以连通网络上不同计算机程序之间的管道,把一堆数
据从管道的 端扔进去,则会从管道的 端(也许同时还可以从 、、"、477端冒出来)。
管道的端口由两个因素来唯一确认,即机器的 地址和程序所使用的端口号。 地址的含义所
有人都知道,所谓端口号就是程序员指定的一个数字,许多著名的木马程序成天在网络上扫描
不同的端口号就是为了获取一个可以连通的端口从而进行破坏。比较著名的端口号有 89 的
端口和 '9 的 .+ 端口(我记错了么?)。当然,建议大家自己写程序不要使用太小的端口
号,它们一般被系统占用了,也不要使用一些著名的端口,一般来说使用 +:- 之内的
端口比较好。
可以支持数据的发送和接收,它会定义一种称为套接字的变量,发送数据时首先创建
套接字,然后使用该套接字的 &) 等方法对准某个 端口进行数据发送;接收端也首先创
建套接字,然后将该套接字绑定到一个 端口上,所有发向此端口的数据会被该套接字的
2 等函数读出。如同读出文件中的数据一样。
5 所需的头文件、库文件和 DLL
对于目前使用最广泛的 (%)*&3., 版本,所需的一些文件如下(以安装了 6 为
例说明其物理位置):
头文件 *%&.,8,通常处于 ;<=34%&<$%&'3%&/3
/)%<#<5";查看该头文件可知其中又包含了 *%)*&,8 和
9&89,8 头文件,因此在 *%)*& 中的一些常用 都可以使用;
库文件 (&.>.,%?,通常处于 ;<=34%&<$%&'3%&/3
/)%<#<5%?;
55 文件 (&.>.,),通常处于 ;<((<&&.,这个是可以猜到的。
6 编写 Socket 程序需要的编程基础
在开始编写 程序之前,需要以下编程基础:
语法;
一点点 *%)*&3! 的基础,了解一些 ! 的数据类型与 的调用方式;
=)%=&<@ 一点点编译、链接和执行的技术;知道 和 % 的最常用用法
即可。
7 UDP
用最通俗的话讲,所谓 ,就是发送出去就不管的一种网络协议。因此 编程的发送端
只管发送就可以了,不用检查网络连接状态。下面用例子来说明怎样编写 ,并会详细解释
每个 和数据类型。
7.1UDP 广播发送程序
下面是一个用 发送广播报文的例子。
A%/)3B*%&.,8@
A%/)3B%&,8@
2%)3%CD
E
FFF3!"3&GFF3 & 套接字
FFF383&H$&=IJ3K3<8%&3%&333&39=<G 被发送的字段
FFF3 +,启动 !" 库,版本为 .,
FFF3(3*&%L/&)G
FFF3(3*&G
FFF3%3GFF3
FFF3*&%L/&)3K3$!"(C3.M33DGF
FFF33K3(/9C3*&%L/&)M3N*&3DG
FFF3%'3C33OK33DF 检查 初始化是否成功
FFF3E
FFFFFF3/BB<., 初始化失败,"1%O<G
FFFFFF3/G
FFF3P
FFF3 检查 库的版本是否为 .,
FFF3%'3C5Q"C3*&,*&%3D3OK3.3RR3SQ"C3*&,*&%3D3OK33D3
FFF3E
FFFFFF3(/9C3DG
FFFFFF3/G3
FFF3P
FFF3 .,创建 &,
FFF3&3K3&C
FFFFFF34>"MFFFFFFFFFF3 %*;3M3M3
FFFFFF3!>0$MFFFFFF3F !>0$ 说明是 类型
FFFFFF3FFFFFFFFFFFFFFFFF3 9
FFFFFF3DG
FFF3%'3C5>!"3KK3&3D3E
FFFFFF3/BB<3创建失败,"1%O<G
剩余19页未读,继续阅读
资源评论
- 入鑫2015-10-31很有帮助,写的很通俗易懂。
b03040604
- 粉丝: 2
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功