没有合适的资源?快使用搜索试试~ 我知道了~
首页Winsock 2.0入门:Windows网络编程详解
Winsock 2.0入门:Windows网络编程详解
需积分: 9 1 下载量 86 浏览量
更新于2024-08-02
收藏 206KB DOCX 举报
本文档主要讲解了如何在Windows环境中使用日文版的WINSOCK进行网络编程。针对的是网络编程的初学者或入门者,特别是那些希望在Windows平台上进行编程的人。WINSOCK是Windows Sockets的缩写,它提供了一个应用程序接口(API),使得开发者能够在Windows系统上利用TCP/IP协议进行网络通信。 文档提到的是Winsock 2.0版本,尽管1.0版本与2.0在核心概念上有相似之处,但本文更侧重于2.0。支持的Windows版本包括Windows 95、98、Me、NT、2000、XP、2003以及Server等。作者使用的是Windows XP搭配Visual Studio.NET 2003开发环境作为示例。 为了开始使用WINSOCK进行网络编程,开发人员需要包含头文件winsock2.h,而不是winsock.h,因为后者可能不够全面。在代码开头添加`#include<winsock2.h>`,然后在编译设置中将ws2_32.lib库链接到项目中,这个库包含了网络功能所需的函数和数据结构。 接下来,文档会通过实际编程示例,结合对网络基础(如TCP/IP、套接字等)的解释,逐步展示如何在代码中实现网络通信。读者将学习如何初始化WINSOCK库,创建套接字,设置端口号,以及进行数据发送和接收等关键步骤。通过这个教程,初学者可以了解如何在Windows平台上利用WINSOCK进行高效的网络编程实践。
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/1618307/bgb.jpg)
一般的な を使ったサーバは、複数回クライアントからの接続を受け付けます。前述した単純
な サーバ例では、一度クライアントからの接続を受け付けたら終了してしまうので、全く実用
性はありません。ここでは、まず、手始めに複数回クライアントからの接続を受け付けられるサー
バを作ってみたいと思います。
以下に改造した サーバを示します。 +(,*-
23
4
005
76)5
(.5
(.5
5
76)5(2#6)71028389035=2F.$)8
76.1)#835.J=F.$)5
.=*2&;!35
..(.=$001.$?5/282(K398
L233528!351,#(
2$#
"**3#44#
*)5&&)6"##
-(235(5
:今回の改造は、*23部分だけです。この改造により、前述した単純な クライアントか
らの接続要求を複数回受け付けられるようになります。
この改造のポイントとして、今回の改造を行った場所と行っていない場所に注目して下さい。
今回改造を行わなかった場所は、「一度だけ行えば良い」部分です。一度だけ行えば良い部分と
は、クライアントからの接続要求を受け付ける準備をする部分です。
逆に、今回改造を行った *23で囲まれた部分は、「 クライアントのセッション毎の処
理」を表しています。毎回、単純な クライアントからの接続要求を受け付けて、文字列を送信
して、クライアントとのセッションを終了するという処理がこの *23の中に含まれています。
今回の改造は非常にコードとしては小さいものですが、コード全体が持つ意味は大きく変わって
います。このサンプルを見て セッションを受け付けるための準備と個々の セッションの違
いを理解して頂ければ幸いです。
/ を使う7#
前述した サーバ例は、処理の概要を示したかったのでエラー処理がありませんでした。エ
ラー処理のないコードは実際には使い物にならないので、エラー処理を追加したいと思います。
何回もクライアントと接続できるサーバ例(エラー処理付)
以下にエラー処理を追加した サーバを示します。 +(,*-
+(,*-
23
![](https://csdnimg.cn/release/download_crawler_static/1618307/bgc.jpg)
4
005
76)5
(.5
(.5
5
76)5
52(2#6)7102838903>=34
(5
:=2F.$)876.1)#835
2==$'E0.76)34
2A@GBA8DE)2335
(5
:.J=F.$)5
.=*2&;!35
..(.=$001.$?52/282(K398
L233>=34
2A/@GBA8DE)2335
(5
:228!3>=34
2A@GBA8DE)2335
(5
:*234
=L235
=282(K398935
2==$'E0.76)34
2A@GBA8DE)2335
/5
:=28AM)EE7A8!835
2,34
2A@GBA8DE)2335
/5
:235
:(235(5
:今回の例では、23を使ってエラー内容を表示して終了しているだけです。 でプ
ログラムを書く場合 23はあまり使わないと思うので、必要に応じてエラー処理を変えてくださ
い。
ここでは、それぞれの関数がどのようなエラー値を返すのかという事に注目していただければと
思います。
/ を使う した相手の確認#
サーバは した後にクライアントからのコネクションを しますが、どのクライ
アントからのコネクションを したかを知りたい場合があると思います。ここでは、接続相
手を確認する方法を説明したいと思います。
![](https://csdnimg.cn/release/download_crawler_static/1618307/bgd.jpg)
した相手を表示するサンプル
の第二引数は、接続した相手に関する情報を含んでいます。以下のサンプルは、
した相手の アドレスとポート番号を表示します。 アドレスの表示には . を利用し
ます。 . は、引数として渡した (. を表現する文字列を返します。
+(,*-
+(,*-
23
4
005
76)5
(.5
(.5
5
76)5(2#6)71028389035=2F.$)8
76.1)#835.J=F.$)5
.=*2&;!35
..(.=$001.$?5/282(K398
L233528!35*234
=L235
=282(K398935$)*
$899*+)
:**#1:##28AM)EE7A8
!835235
:(235(5
-/ を使うサーバ、 ;'' #
前述した サーバ例では、サーバを終了した直後にもう一度サーバを起動しようとすると、
/ がエラーで終了することがあります。ここでは、その問題を回避するために 7.1)C)001
を有効にする方法を説明したいと思います。
!
サーバのプログラムを書いていて、 サーバを終了して直後にもう一度起動したときに、
/ が「J(」というようなエラーで失敗してしまったとこは無いでしょう
か?「あれ?もう のサーバプロセスは終了しているのに。何故、/ 出来ないのだろう?」と
思いつつ、しばらく時間がたってからもう一度実行すると問題なく / が成功したりします。この
問題は 自体の仕組み(仕様)によって引き起こされています。( の問題ではなく、
の仕様です)。具体的には #). 状態という状態が / を させています。
サーバが セッションを受け付け すると、#). 状態になります。ここで注意し
ないといけないのは、 サーバで #). が発生する場合と発生しない場合があることです。
サーバ側で を先に実行すると #). 状態が発生しますが、 クライアント側で
剩余61页未读,继续阅读
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/fc3b6d2ea4a44f34ae808e435ce015de_eddiesoft.jpg!1)
钱塘工匠
- 粉丝: 2
- 资源: 3
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 解决本地连接丢失无法上网的问题
- BIOS报警声音解析:故障原因与解决方法
- 广义均值移动跟踪算法在视频目标跟踪中的应用研究
- C++Builder快捷键大全:高效编程的秘密武器
- 网页制作入门:常用代码详解
- TX2440A开发板网络远程监控系统移植教程:易搭建与通用解决方案
- WebLogic10虚拟内存配置详解与优化技巧
- C#网络编程深度解析:Socket基础与应用
- 掌握Struts1:Java MVC轻量级框架详解
- 20个必备CSS代码段提升Web开发效率
- CSS样式大全:字体、文本、列表样式详解
- Proteus元件库大全:从基础到高级组件
- 74HC08芯片:高速CMOS四输入与门详细资料
- C#获取当前路径的多种方法详解
- 修复MySQL乱码问题:设置字符集为GB2312
- C语言的诞生与演进:从汇编到系统编程的革命
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)