`
duoerbasilu
  • 浏览: 1541640 次
文章分类
社区版块
存档分类
最新评论

在VC下使用标准的socket函数编程的步骤

 
阅读更多

VC 下使用标准的socket函数编程的步骤
socket是一种在Linux或者Unix下非常流行的网络编程方式,这种方式简单有效,可以很灵活的完成各种复杂的协议控制,个人感觉比使用MFC下的网络相关类库要来的更舒服一些,因为所有一切都是自己可控的。
但是使用socket编程有一个非常不方便的地方在于,由于在Linux下没有一个像VC 这样强大的调试平台,网络通信过程中的错误追踪就会显得稍微复杂一些。无奈,只能尝试在VC 下是否可以使用标准的socket函数来完成网络通信,借助VC 强大的调试工具来达到高效率的编码目的。
在网上找了一些资料,看来VC 下使用标准socket函数也不是很困难,遂将过程记录,以便后用~~
第一步,使用VC 的winsock.h头文件,代替Linux下的socket相关的头文件。
第二步,为VC 的工程链接winsock的库文件ws2_32.lib
以上两步可以通过下面的代码实现:
1: #ifdef _WIN32
2: #include <winsock.h>
3: #pragma comment(lib, "ws2_32.lib")
4: #else
5: #include <sys/socket.h>
6: #include <netinet/in.h>
7: #include <arpa/in.h>
8: #endif
第三步,在使用任何sochet函数之前,首先使用WSAStartup函数初始化winsock,在退出应用程序前,使用WSACleanup函数清理winsock。可以使用下面的代码实现:
1: WORD wVersionRequested;
2: WSADATA wsaData;
3: int err;
4: wVersionRequested = MAKEWORD( 1, 1 );
5: // init winsock before using socket functions
6: err = WSAStartup( wVersionRequested, &wsaData );
7: if ( err != 0 ) {
8: return 0;
9: }
10: // check winsock version
11: if ( LOBYTE( wsaData.wVersion ) != 1 ||
12: HIBYTE( wsaData.wVersion ) != 1 ) {
13: WSACleanup( );
14: return 0;
15: }
16:
17: // use socket function here
18:
19: // clean up winsock before exit
20: WSACleanup();
OK,经过上面的三步处理,就可以在程序中使用标准socket函数完成网络通信了!
最后给出一个简单的范例:
1: #include <stdio.h>
2: #include <stdlib.h>
3:
4: #ifdef _WIN32
5: #include <winsock.h>
6: #pragma comment(lib, "ws2_32.lib")
7: #else
8: #include <sys/socket.h>
9: #include <netinet/in.h>
10: #include <arpa/in.h>
11: #endif
12:
13: int main(int argc, char *argv[])
14: {
15: int err;
16: SOCKET sockClient;
17: SOCKADDR_IN addrSrv;
18: char recvBuf[50];
19:
20: #ifdef _WIN32
21: WORD wVersionRequested;
22: WSADATA wsaData;
23: wVersionRequested = MAKEWORD( 1, 1 );
24:
25: err = WSAStartup( wVersionRequested, &wsaData );
26: if ( err != 0 ) {
27: return 0;
28: }
29:
30: if ( LOBYTE( wsaData.wVersion ) != 1 ||
31: HIBYTE( wsaData.wVersion ) != 1 ) {
32: WSACleanup( );
33: return 0;
34: }
35: #endif
36:
37: sockClient=socket(AF_INET,SOCK_STREAM,0);
38:
39: addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
40: addrSrv.sin_family=AF_INET;
41: addrSrv.sin_port=htons(6000);
42: connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
43: send(sockClient,"hello",strlen("hello")+1,0);
44: recv(sockClient,recvBuf,50,0);
45: printf("%s/n",recvBuf);
46:
47: #ifdef _WIN32
48: closesocket(sockClient);
49: WSACleanup();
50: #endif
51: return 0;
52: }
http://hi.baidu.com/hiroada/blog/item/9ece37d6083a32d5a044df7e.html

分享到:
评论

相关推荐

    vc中socket编程步骤

    ### vc中socket编程步骤 #### 一、概述 在VC++环境下进行Socket编程是一种常见的网络通信方式,通过Socket可以实现不同计算机之间的数据交互。Socket编程主要分为两大类:基于TCP的流式套接字(SOCK_STREAM)和...

    VC学习笔记-基于TCP的socket编程

    ### 基于TCP的Socket编程在VC中的应用与实现 ...以上步骤详细介绍了如何在VC环境下使用TCP协议进行socket编程。从初始化Winsock库到数据传输及资源释放,每一步都是构建稳定、高效网络通信的关键。

    VC6.0--socket编程服务器通信

    Socket编程是计算机网络编程中的重要组成部分,特别是在Windows环境下,Visual C++ 6.0(简称VC6.0)因其简洁的界面和强大的编程能力,常被用于开发基于Socket的网络应用。本篇将深入探讨如何在VC6.0中进行Socket...

    VC6.0下的socket编程 实现了UDP数据传输

    在本文中,我们将深入探讨如何在Visual C++ 6.0(简称VC6.0)环境下使用Socket API实现UDP(用户数据报协议)数据传输。Socket编程是网络编程的基础,而UDP是一种无连接、不可靠的传输协议,适用于对实时性要求较高...

    vc ,socket编程含客户端和服务端

    Socket编程是计算机网络通信中的重要技术,特别是在Windows环境下,Visual C++(简称VC)提供了丰富的API函数和类库来支持socket编程。本压缩包包含了客户端(client)和服务端(server)的示例代码,这对于理解和...

    VC socket 服务器编程实例源码

    Socket编程在IT行业中是网络通信的基础,特别是在Windows环境下,Visual C++(简称VC)提供了强大的支持,让开发者能够创建高效且可靠的网络应用。本实例主要关注的是使用VC6.0进行Socket服务器编程,通过理解与实践...

    vc有关SOCKET编程例子

    在Windows环境下,通常使用Visual C++(VC)作为开发工具进行SOCKET编程。"vc有关SOCKET编程例子"这个标题表明我们将探讨如何在VC环境中利用SOCKET API进行网络通信。 首先,SOCKET在C++编程中是一个结构体,它封装...

    VC中基于SOCKET的网络编程

    标题提到的“VC中基于SOCKET的网络编程”,指的是在Visual C++(VC)环境下利用Winsock库进行网络编程,其核心在于使用...这对于需要了解如何在Windows环境下使用C++进行网络编程的开发者来说,是一个重要的参考资料。

    VC下SOCKET编程实例(客户端)源代码

    在本文中,我们将深入探讨如何在Microsoft Visual C++(简称VC)环境下进行SOCKET编程,主要关注客户端的实现。SOCKET编程是网络通信的核心部分,它允许程序通过Internet或局域网进行数据交换。在VC中,我们可以使用...

    VC下的socket编程

    在VC环境下进行Socket编程,需要对Windows Socket API有深入的理解,包括初始化、创建Socket、绑定地址、监听、连接、数据传输以及清理等关键步骤。掌握了这些基本原理和流程,开发者就可以构建出功能强大的网络应用...

    VC实现多线程socket通信

    "VC实现多线程socket通信"这个主题聚焦于如何在Microsoft Visual C++(VC)环境下利用多线程技术进行socket编程,以实现高效且并发的网络通信。 Socket是网络编程中的一个重要概念,它提供了一种进程间通信(IPC)...

    VC_socket编程入门实例

    VC_socket,即Visual C++中的socket编程,是Windows环境下使用C++进行网络编程的一种方式。Socket接口提供了标准的API,允许开发者创建能够进行网络数据传输的应用程序。本文将围绕"VC_socket编程入门实例"展开,...

    VC6下Socket编程实例(客户端+服务器端)

    在本文中,我们将深入探讨如何在Microsoft Visual C++ 6.0(简称VC6)环境下进行Socket编程,通过具体的客户端和服务器端实例来解析相关知识。Socket编程是网络通信的基础,它提供了一种标准接口,使得应用程序能够...

    vc6 实现socket服务端客户端

    总之,通过VC6实现Socket服务端和客户端,你需要理解Winsock API,熟练掌握Socket生命周期中的各个步骤,以及如何在VC6环境下组织和调试代码。虽然现在有更新的开发工具,但VC6的Socket编程基础仍然对理解网络编程...

    vc网络编程(socket)基本编程详解.pdf

    以上就是VC下使用Winsock API进行Socket编程的基本流程。在实际编程中,还需要处理各种错误情况,如使用`WSAGetLastError()`获取错误代码,并进行适当的错误处理。同时,CAsyncSocket和CSocket类提供了一种更高级的...

    Vc.rar_VC socket_VC Socket_Vc_socket_socket vc

    在IT领域,尤其是在Windows平台下的软件开发中,Visual C++(简称VC)是一个广泛使用的集成开发环境(IDE),用于编写C++程序。标题中的“Vc.rar_VC Socket_Vc_Socket_vc”暗示了这个压缩包可能包含了一系列关于VC++...

    VC编制Socket客户端

    7. **关闭Socket**:在完成通信后,记得调用`closesocket`函数关闭Socket,然后使用`WSACleanup`来清理Winsock环境。 在提供的压缩包文件"clt"中,可能包含了示例代码、编译后的可执行文件或其他相关资源,帮助读者...

    vc 网络编程(socket)

    VC 网络编程主要涉及的是使用 Socket API 进行客户端和服务器端的通信。Socket 是网络编程中的基本概念,它提供了一种进程间通信(IPC)的方式,特别是在分布式系统中,使得不同计算机上的应用程序能够交换数据。在 ...

    SOCKET编程VC6.0源代码完整的客户端和服务端

    本文将深入讲解SOCKET编程在VC6.0环境下客户端和服务端的实现,以及如何利用TCP协议进行数据传输。 首先,SOCKET是一种应用程序接口(API),用于在网络上的不同机器之间建立通信连接。在Windows操作系统中,我们...

Global site tag (gtag.js) - Google Analytics