`
墙头上一根草
  • 浏览: 154099 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

C++ Socket编程步骤

    博客分类:
  • c++
阅读更多

sockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW);基于TCP的socket编程是采用的流式套接字。

服务器端编程的步骤:

1:加载套接字库,创建套接字(WSAStartup()/socket());

2:绑定套接字到一个IP地址和一个端口上(bind());

3:将套接字设置为监听模式等待连接请求(listen());

4:请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept());

5:用返回的套接字和客户端进行通信(send()/recv());

6:返回,等待另一连接请求;

7:关闭套接字,关闭加载的套接字库(closesocket()/WSACleanup())。

客户端编程的步骤:

1:加载套接字库,创建套接字(WSAStartup()/socket());

2:向服务器发出连接请求(connect());

3:和服务器端进行通信(send()/recv());

4:关闭套接字,关闭加载的套接字库(closesocket()/WSACleanup())。

第一式: 加载/释放Winsock库:

1.加载方法:

WSADATA wsa;
/*初始化socket资源*/
if (WSAStartup(MAKEWORD(1,1),&wsa) != 0)
{
    return;   //代表失败
}

2.释放方法:

WSACleanup();

第二式: 构造SOCKET:

1.服务端:构造监听SOCKET,流式SOCKET.
   SOCKET Listen_Sock = socket(AF_INET, SOCK_STREAM, 0)

2.客户端:构造通讯SOCKET,流式SOCKET.
SOCKET Client_Sock = socket(AF_INET, SOCK_STREAM, 0)

第三式:配置监听地址和端口:

1.服务端: SOCKADDR_IN serverAddr
ZeroMemory((char *)&serverAddr,sizeof(serverAddr));
   serverAddr.sin_family = AF_INET;
   serverAddr.sin_port = htons(1234);           /*本地监听端口:1234*/
   serverAddr.sin_addr.s_addr = htonl(INADDR_ANY); /*有IP*/

第四式:   绑定SOCKET:

1.服务端:绑定监听SOCKET.
  bind(Listen_Sock,(struct sockaddr *)&serverAddr,sizeof(serverAddr))

第五式: 服务端/客户端连接:

1.服务端:等待客户端接入.
   SOCKET Command_Sock = accept(Listen_Sock, ...)

2.客户端:请求与服务端连接.
int ret = connect(Client_Sock, ...)

第六式: 收/发数据:

1.服务端:等待客户端接入.char buf[1024].
    接收数据:recv(Command_Sock,buf, ...)

    发送数据:send(Command_Sock,buf, ...)

2.客户端:请求与服务端连接.char buf[1024].
    发送数据:send(Client_Sock,buf, ...)

    接收数据:recv(Client_Sock,buf, ...)

第七式: 关闭SOCKET:

1.服务端:关闭SOCKET.
   closesocket(Listen_Sock)
closesocket(Command_Sock)

2.客户端:关闭SOCKET.
closesocket(Client_Sock)

#include <stdio.h>
#include <Winsock2.h>
void main()
{
 WORD wVersionRequested;
 WSADATA wsaData;
 int err;
 
 wVersionRequested = MAKEWORD( 1, 1 );
 
 err = WSAStartup( wVersionRequested, &wsaData );
 if ( err != 0 ) {
  return;
 }
 
 if ( LOBYTE( wsaData.wVersion ) != 1 ||
        HIBYTE( wsaData.wVersion ) != 1 ) {
  WSACleanup( );
  return;
 }
 SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);

 SOCKADDR_IN addrSrv;
 addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
 addrSrv.sin_family=AF_INET;
 addrSrv.sin_port=htons(6000);
 
 bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));

 listen(sockSrv,5);

 SOCKADDR_IN addrClient;
 int len=sizeof(SOCKADDR);
 while(1)
 {
  SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
  char sendBuf[50];
  sprintf(sendBuf,"Welcome %s to here!",inet_ntoa(addrClient.sin_addr));
  send(sockConn,sendBuf,strlen(sendBuf)+1,0);
  char recvBuf[50];
  recv(sockConn,recvBuf,50,0);
  printf("%s\n",recvBuf);
  closesocket(sockConn);
 }

}
#include <stdio.h>
#include
<Winsock2.h>

void main()

{
WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 1, 1 );

err
= WSAStartup( wVersionRequested, &wsaData );
if ( err !=0 )
{
return;
}

 
if ( LOBYTE( wsaData.wVersion ) !=1||
HIBYTE( wsaData.wVersion )
!=1 )
{
WSACleanup( );
return;
}
SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);

SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);
connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
send(sockClient,"hello",strlen("hello")+1,0);
char recvBuf[50];
recv(sockClient,recvBuf,50,0);
printf("%s\n",recvBuf);

closesocket(sockClient);
WSACleanup();
}
 
分享到:
评论

相关推荐

    C++socket编程实例

    在IT领域,网络通信是不可或缺的一部分,而C++作为强大的编程语言,提供了丰富的库支持进行网络...压缩包中的"**C++Socket编程**"文件可能包含了详细的代码示例和步骤解析,对于学习和理解C++ socket编程非常有帮助。

    c++ socket编程实例(服务端及客户端)

    在IT行业中,网络编程是构建分布式系统和网络应用的基础,而C++ Socket编程则是实现这一目标的重要工具。Socket是操作系统提供的接口,允许程序通过网络进行通信。本实例提供了C++实现的服务端(server.cpp)和客户端...

    C++ SOCKET编程介绍

    C++ SOCKET编程是一种在C++中实现网络通信的技术,它基于Berkeley Sockets接口,允许开发者创建客户端和服务器应用程序,实现跨网络的数据传输。SOCKET是操作系统提供的一个接口,使得程序能够通过网络发送和接收...

    C++socket编程向固定网卡发送数据

    在C++中,Socket编程主要涉及以下几个步骤: 1. **初始化网络库**:在Windows环境下,通常需要调用`WSAStartup()`函数来启动Winsock DLL。 2. **创建Socket**:使用`socket()`函数创建一个Socket对象。 3. **设置...

    visual c++ Socket编程PDF带源码

    《Visual C++ Socket编程》是一本专注于利用Visual C++进行Socket网络编程的教程,其中包含了丰富的源代码供学习者实践。Socket编程是计算机网络通信的基础,尤其在开发跨平台、高性能的网络应用时,它是不可或缺的...

    c++Socket编程自己写的

    下面我们将详细探讨TCP Socket编程在C++中的应用。 首先,为了进行TCP Socket编程,我们需要包含相应的头文件,如`&lt;sys/socket.h&gt;`,`&lt;netinet/in.h&gt;`和`&lt;arpa/inet.h&gt;`,这些头文件提供了必要的函数和结构体定义。...

    Linux下简单C++ socket编程

    本教程将深入探讨如何在Linux环境下进行简单的C++ Socket编程,包括基本概念、步骤以及示例代码。 首先,Socket是网络通信中的一个抽象接口,它允许应用程序通过网络协议(如TCP/IP)进行数据交换。在C++中,我们...

    C++ Socket编程简单源码

    C++ Socket编程是网络通信领域中的重要组成部分,它允许程序通过网络进行数据交换。本教程将深入探讨C++中Socket编程的基本概念、客户端与服务器端的实现以及如何使用提供的简单源码进行学习。 首先,Socket是操作...

    Linux下C++ Socket编程实例

    本教程将深入探讨如何在Linux环境下使用C++进行Socket编程,通过分析提供的`SocketServer.cpp`和`SocketClient.cpp`两个文件,我们可以学习到C++与Linux Socket API的交互。 首先,让我们了解Socket的基本概念。...

    用C++进行Socket编程

    本文将深入探讨如何在Linux环境下利用C++进行Socket编程,包括基本概念、步骤、示例代码以及常见问题。 一、Socket基本概念 Socket,又称为套接字,是网络通信中的端点,它允许两个或多个应用程序通过网络交换数据...

    C++ Socket 网络编程

    在IT领域,网络编程是构建分布式系统和网络应用的基础,而C++ Socket编程则是实现这一目标的重要技术之一。本文将深入探讨C++ Socket网络编程的相关知识点,帮助开发者理解和掌握其核心概念、步骤以及常见问题。 ...

    Linux下使用C++进行Socket编程

    在Linux系统中,C++与Socket编程的结合是构建网络应用程序的基础。Socket接口提供了一种标准的方法,使得运行在不同主机上的进程可以通过网络进行通信。本文将深入探讨如何在Linux环境下利用C++进行Socket编程。 ...

    C++ socket编程MFC

    Socket编程的基本步骤如下: 1. **初始化Winsock**:通过调用`WSAStartup`函数来加载Winsock库,指定所需的库版本并接收关于Winsock的信息。 2. **创建Socket**:使用`socket`函数创建Socket,指定协议族(如AF_...

    c++socket实例编程[参照].pdf

    在C++中,Socket编程是实现网络通信的一种基础方法,主要涉及到网络协议、编程语言、API(如Windows Socket API,简称Winsock)以及图形界面的综合应用。本实例旨在教授如何使用C++来创建、监听、连接、发送数据和...

    c++ socket 编程

    本文将深入探讨如何使用C++进行Socket编程,特别是在处理结构体消息传递方面。 首先,理解Socket的基本概念是至关重要的。Socket可以看作是网络上的两个进程间通信的一个端点或者连接点,它提供了标准接口来实现...

    C++网络编程socket编程

    Socket编程涉及一系列基本的操作步骤,这些步骤通常包括创建Socket、绑定地址、监听连接、接受连接、发送和接收数据以及关闭Socket。下面我们详细介绍这些操作及其对应的函数。 ##### 3.1 socket()函数 `int ...

    C++简单的socket编程

    在C++中,进行Socket编程主要涉及以下步骤: 1. **创建Socket**:首先,我们需要调用`socket()`函数来创建一个Socket实例。这个函数会返回一个Socket描述符,用于后续的所有操作。例如: ```cpp int socket_fd = ...

    c++ socket Library Documentation

    包含的`sockets.cmap`可能是一个思维导图,展示了各种Socket编程步骤和函数调用关系,而`html`文件可能是详细的API文档或示例代码的HTML版本,可以查看以获取更具体的信息。 9. **跨平台兼容性** C++ Socket库...

    C++socket编程

    在这个专题中,我们将深入探讨C++ Socket编程的基本概念、主要步骤以及TCP和UDP协议的应用。 首先,Socket是操作系统提供的一种通信机制,它相当于网络上的邮局,负责接收和发送数据。在C++中,通过调用socket库...

    socket网络编程C++版

    socket网络编程C++版小实验,有客户端和服务器端的源代码。 socket的英文原义是“孔”或“插座”。作为进程通信机制,取后一种意思。通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄。(其实就是两...

Global site tag (gtag.js) - Google Analytics