[VC]vc中socket编程步骤

sockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW);
基于TCP的socket编程是采用的流式套接字。在这个程序中,将两个工程添加到一个工作区。要链接一个ws2_32.lib的库文件。

服务器端编程的步骤:

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

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

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

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

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

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

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

服务器端代码如下:
#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);

}

}客户端编程的步骤:

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

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

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

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

客户端的代码如下:
#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();
}

sockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW);
基于TCP的socket编程是采用的流式套接字。在这个程序中,将两个工程添加到一个工作区。要链接一个ws2_32.lib的库文件。

服务器端编程的步骤:

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

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

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

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

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

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

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

服务器端代码如下:
#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);

}

}客户端编程的步骤:

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

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

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

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

客户端的代码如下:
#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();
}

时间: 2024-10-12 17:23:51

[VC]vc中socket编程步骤的相关文章

C++socket编程步骤

sockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW):基于TCP的socket编程是採用的流式套接字. server端编程的步骤:1:载入套接字库,创建套接字(WSAStartup()/socket()): 2:绑定套接字到一个IP地址和一个port上(bind()):3:将套接字设置为监听模式等待连接请求(listen()): 4:请求到来后,接受连接请求,返回一个新的相应于此次连接的套接字(accept

[转]C++ Socket编程步骤

C++ Socket编程步骤 sockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW):基于TCP的socket编程是采用的流式套接字. 服务器端编程的步骤:1:加载套接字库,创建套接字(WSAStartup()/socket()):2:绑定套接字到一个IP地址和一个端口上(bind()):3:将套接字设置为监听模式等待连接请求(listen()):4:请求到来后,接受连接请求,返回一个新的对应于此次连接的套接

Python中socket编程

1.Socket介绍: Python中提供socket.py标准库,非常底层的接口库. Socket是一种通用的网络编程接口,和网络层次没有一一对应关系. 跨操作系统的.紧密结合tcp和udp来使用的. 接口简单,但是背后的原理不简单,ip加tcp,通过插两端.通过socket通道:连接程序. 建立关联. apc库. 加端口是因为应用程序太多了.绑定ip地址,作为假端口. 端口是由谁管理的 一般都是tcp和udp编程.Socket基本的,chatserver. 协议族:AF 表示address

c++中Socket编程(入门)

在学习Socket编程时,在其他地方看到了不错Socket入门文档,通俗易懂: 介绍 Socket编程让你沮丧吗?从man pages中很难得到有用的信息吗?你想跟上时代去编Internet相关的程序,但是为你在调用 connect() 前的bind() 的结构而不知所措?等等- 好在我已经将这些事完成了,我将和所有人共享我的知识了.如果你了解 C 语言并想穿过网络编程的沼泽,那么你来对地方了. 读者对象 这个文档是一个指南,而不是参考书.如果你刚开始 socket 编程并想找一本入门书,那么你

java开发中JDBC编程步骤-Mysql

JDBC编程步骤 1.引入相关的包 import java.sql.*; 2.加载驱动 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM 方法:实例化Driver类,成功后会自动将Driver的实例注册到DriverManager类中 //例如mysql数据库 Class.forName("com.mysql.jdbc.Driver");    或者   new com.mysql.jdbc.Driver(); 成功加载后,会将Driver类的实例注册到DriverManag

Delphi的Socket编程步骤(repulish)

转贴自:http://topic.csdn.net/t/20010727/16/212155.html ClientSocket 和ServerSocket几个重要的属性:   1.client和server都有port属性,需要一致才能互相通信   2.client有Address属性,使用时填写对方(server)的IP地址       几个重要的事件:       client:    OnRead事件,当client受到冲击消息时在OnRead事件中可以获得server发送过来消息.  

c++ socket 编程步骤

服务器 socket() bind() listen() 客户机 accept()                                                 socket()   connect() read() write() write() read() close() close()

win32下Socket编程(转载)

在网上找了很多的资料,现将这些资料整合起来,详细介绍一下VC下的socket编程,并提供一个服务器客户端具体的实例.希望对您有所帮助 一.原理部分 (个人觉得这篇写的可以,所以转与此,原文地址:http://dev.yesky.com/78/2683078.shtml) 在网络编程中最常用的方案便是Client/Server (客户机/服务器)模型.在这种方案中客户应用程序向服务器程序请求服务.一个服务程序通常在一个众所周知的地址监听对服务的请求,也就是说,服务进程一 直处于休眠状态,直到一个客

iOS项目开发之Socket编程

有一段时间没有认真总结和写博客了 前段时间找工作.进入工作阶段.比较少静下来认真总结,现在静下心来总结一下最近的一些心得 前言 AsyncSocket介绍 AsyncSocket详解 AsyncSocket示例 一.前言 公司的项目用到了Socket编程,之前在学习的过程当中,用到的更多的还是http请求的方式.但是既然用到了就必须学习一下,所以就在网上找一些例子,然后想自己写一个demo.可是发现很多写iOS Socket的博客并没有很详细的说明,也可能是大神们觉得其他东西都浅显易懂. 自己专