Chinaunix首页 | 论坛 | 博客
  • 博客访问: 620074
  • 博文数量: 69
  • 博客积分: 1891
  • 博客等级: 上尉
  • 技术积分: 1359
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-20 23:38
文章分类

全部博文(69)

文章存档

2012年(46)

2011年(23)

分类: C/C++

2011-05-24 01:32:36

原理:网络上两个终端之间的通信采用的是套接字,基本的套接字通信都可以通过创建套接字,绑定到端口,监听,连接,发送和接收数据完成。

在Windows下进行winsock编程,需要用WSAStartup()指明Windows Sockets API的版本号及获得特定Windows Sockets实现的细节,并且在程序结束时用WSACleanup()释放对应的资源。


一个基本的winsock应用框架代码如下。

需加入Ws2_32.lib库才能编译运行。

代码:

  1. #include <stdlib.h>
  2. #include <windows.h>
  3. #include <stdio.h>
  4. #include <winsock2.h>


  5. int main(int argc, char** argv) {

  6.     WSADATA wsaData;
  7.     if((Ret = WSAStartup(MAKEWORD(2,2),&wsaData))!=0){
  8.         printf("WSAStartup failed with error%d\n",Ret);
  9.         return 1;
  10.     }
  11. /*本函数必须是应用程序或DLL调用的第一个Windows Sockets函数.

  12.   它允许应用程序或DLL指明Windows Sockets API的版本号及获得特

  13.   定Windows Sockets实现的细节.应用程序或DLL只能在一次成功的

  14.   WSAStartup()调用之后才能调用进一步的Windows Sockets API函数.*/

  15.   //**********************************

  16.   此处加入应用程序的代码。

  17.   

  18.   //**********************************
  19.     
  20.     if(WSACleanup()==SOCKET_ERROR){
  21.         printf("WSACleanup failed with error %d\n",WSAGetLastError());
  22.         return 1;

  23.   }
  24. /*
  25.   应用程序或DLL在使用Windows Sockets服务之前必须要进行一次成功的WSAStartup()调用.当它完成了Windows Sockets的使用后,应用程序或DLL必须调用WSACleanup()将其从Windows Sockets的实现中注销,并且该实现释放为应用程序或DLL分配的任何资源.任何打开的并已建立连接的SOCK_STREAM类型套接口在调用 WSACleanup()时会重置; 而已经由closesocket()关闭却仍有要发送的悬而未决数据的套接口则不会受影响- 该数据仍要发送.
  26.   对应于一个任务进行的每一次WSAStartup()调用,必须有一个WSACleanup()调用.只有最后的WSACleanup()做实际的清除工作;前面的调用仅仅将Windows Sockets DLL中的内置引用计数递减.一个简单的应用程序为确保WSACleanup()调用了足够的次数,可以在一个循环中不断调用WSACleanup()直至返回WSANOTINITIALISED.

  27. */

  28.     return 0;

  29. }
阅读(1942) | 评论(3) | 转发(0) |
0

上一篇:SDL Tutorial Basics(1)

下一篇:HTTP原理(一)

给主人留下些什么吧!~~

kenvifire2011-05-25 00:02:38

小雅贝贝: 不错啊。呵呵,以后要多多分享好的博文哦~.....
多谢鼓励,第一次在cu上开播,欢迎以后来捧场。

jackettop2011-05-24 14:53:41

That was a great piece of information., I enjoyed reading it...
<a href=http://www.discountbagsonsale.com>wholesale handbags</a>
[url=http://www.discountbagsonsale.com]wholesale handbags[/url]
<a href="http://www.discountbagsonsale.com" title="wholesale handbags">wholesale handbags</a>
[url=http://www.discountbagsonsale.com wholesale handbags]

小雅贝贝2011-05-24 09:40:53

不错啊。呵呵,以后要多多分享好的博文哦~