[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 <stdio.h> #include <Winsock2.h>
#include <Winsock2.h> void main()
void main()

 {
{ WORD wVersionRequested;
 WORD wVersionRequested; WSADATA wsaData;
 WSADATA wsaData; int err;
 int err; 
  wVersionRequested = MAKEWORD( 1, 1 );
 wVersionRequested = MAKEWORD( 1, 1 ); 
  err = WSAStartup( wVersionRequested, &wsaData );
 err = WSAStartup( wVersionRequested, &wsaData );
 if ( err != 0 )
 if ( err != 0 )  {
{ return;
  return; }
 } 
  if ( LOBYTE( wsaData.wVersion ) != 1 ||
 if ( LOBYTE( wsaData.wVersion ) != 1 ||
 HIBYTE( wsaData.wVersion ) != 1 )
         HIBYTE( wsaData.wVersion ) != 1 )  {
{ WSACleanup( );
   WSACleanup( ); return;
  return; }
 } SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);
 SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);
 SOCKADDR_IN addrSrv;
 SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
 addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY); addrSrv.sin_family=AF_INET;
 addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(6000);
 addrSrv.sin_port=htons(6000); 
  bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
 bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
 listen(sockSrv,5);
 listen(sockSrv,5);
 SOCKADDR_IN addrClient;
 SOCKADDR_IN addrClient; int len=sizeof(SOCKADDR);
 int len=sizeof(SOCKADDR); while(1)
 while(1)
 
  {
{ SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
   SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len); char sendBuf[50];
  char sendBuf[50]; sprintf(sendBuf,"Welcome %s to here!",inet_ntoa(addrClient.sin_addr));
   sprintf(sendBuf,"Welcome %s to here!",inet_ntoa(addrClient.sin_addr)); send(sockConn,sendBuf,strlen(sendBuf)+1,0);
   send(sockConn,sendBuf,strlen(sendBuf)+1,0); char recvBuf[50];
  char recvBuf[50]; recv(sockConn,recvBuf,50,0);
   recv(sockConn,recvBuf,50,0); printf("%s\n",recvBuf);
   printf("%s\n",recvBuf); closesocket(sockConn);
   closesocket(sockConn); }
 }
 }客户端编程的步骤:
}客户端编程的步骤:
1:加载套接字库,创建套接字(WSAStartup()/socket());
2:向服务器发出连接请求(connect());
3:和服务器端进行通信(send()/recv());
4:关闭套接字,关闭加载的套接字库(closesocket()/WSACleanup())。
客户端的代码如下: #include <stdio.h>
#include <stdio.h> #include <Winsock2.h>
#include <Winsock2.h> void main()
void main()

 {
{ WORD wVersionRequested;
 WORD wVersionRequested; WSADATA wsaData;
 WSADATA wsaData; int err;
 int err; 
  wVersionRequested = MAKEWORD( 1, 1 );
 wVersionRequested = MAKEWORD( 1, 1 ); 
  err = WSAStartup( wVersionRequested, &wsaData );
 err = WSAStartup( wVersionRequested, &wsaData );
 if ( err != 0 )
 if ( err != 0 )  {
{ return;
  return; }
 } 
  if ( LOBYTE( wsaData.wVersion ) != 1 ||
 if ( LOBYTE( wsaData.wVersion ) != 1 ||
 HIBYTE( wsaData.wVersion ) != 1 )
         HIBYTE( wsaData.wVersion ) != 1 )  {
{ WSACleanup( );
   WSACleanup( ); return;
  return; }
 } SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);
 SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0); 
  SOCKADDR_IN addrSrv;
 SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
 addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1"); addrSrv.sin_family=AF_INET;
 addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(6000);
 addrSrv.sin_port=htons(6000); connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
 connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); send(sockClient,"hello",strlen("hello")+1,0);
 send(sockClient,"hello",strlen("hello")+1,0); char recvBuf[50];
 char recvBuf[50]; recv(sockClient,recvBuf,50,0);
 recv(sockClient,recvBuf,50,0); printf("%s\n",recvBuf);
 printf("%s\n",recvBuf); 
  closesocket(sockClient);
 closesocket(sockClient); WSACleanup();
 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 <stdio.h> #include <Winsock2.h>
#include <Winsock2.h> void main()
void main()

 {
{ WORD wVersionRequested;
 WORD wVersionRequested; WSADATA wsaData;
 WSADATA wsaData; int err;
 int err; 
  wVersionRequested = MAKEWORD( 1, 1 );
 wVersionRequested = MAKEWORD( 1, 1 ); 
  err = WSAStartup( wVersionRequested, &wsaData );
 err = WSAStartup( wVersionRequested, &wsaData );
 if ( err != 0 )
 if ( err != 0 )  {
{ return;
  return; }
 } 
  if ( LOBYTE( wsaData.wVersion ) != 1 ||
 if ( LOBYTE( wsaData.wVersion ) != 1 ||
 HIBYTE( wsaData.wVersion ) != 1 )
         HIBYTE( wsaData.wVersion ) != 1 )  {
{ WSACleanup( );
   WSACleanup( ); return;
  return; }
 } SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);
 SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);
 SOCKADDR_IN addrSrv;
 SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
 addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY); addrSrv.sin_family=AF_INET;
 addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(6000);
 addrSrv.sin_port=htons(6000); 
  bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
 bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
 listen(sockSrv,5);
 listen(sockSrv,5);
 SOCKADDR_IN addrClient;
 SOCKADDR_IN addrClient; int len=sizeof(SOCKADDR);
 int len=sizeof(SOCKADDR); while(1)
 while(1)
 
  {
{ SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
   SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len); char sendBuf[50];
  char sendBuf[50]; sprintf(sendBuf,"Welcome %s to here!",inet_ntoa(addrClient.sin_addr));
   sprintf(sendBuf,"Welcome %s to here!",inet_ntoa(addrClient.sin_addr)); send(sockConn,sendBuf,strlen(sendBuf)+1,0);
   send(sockConn,sendBuf,strlen(sendBuf)+1,0); char recvBuf[50];
  char recvBuf[50]; recv(sockConn,recvBuf,50,0);
   recv(sockConn,recvBuf,50,0); printf("%s\n",recvBuf);
   printf("%s\n",recvBuf); closesocket(sockConn);
   closesocket(sockConn); }
 }
 }客户端编程的步骤:
}客户端编程的步骤:
1:加载套接字库,创建套接字(WSAStartup()/socket());
2:向服务器发出连接请求(connect());
3:和服务器端进行通信(send()/recv());
4:关闭套接字,关闭加载的套接字库(closesocket()/WSACleanup())。
客户端的代码如下: #include <stdio.h>
#include <stdio.h> #include <Winsock2.h>
#include <Winsock2.h> void main()
void main()

 {
{ WORD wVersionRequested;
 WORD wVersionRequested; WSADATA wsaData;
 WSADATA wsaData; int err;
 int err; 
  wVersionRequested = MAKEWORD( 1, 1 );
 wVersionRequested = MAKEWORD( 1, 1 ); 
  err = WSAStartup( wVersionRequested, &wsaData );
 err = WSAStartup( wVersionRequested, &wsaData );
 if ( err != 0 )
 if ( err != 0 )  {
{ return;
  return; }
 } 
  if ( LOBYTE( wsaData.wVersion ) != 1 ||
 if ( LOBYTE( wsaData.wVersion ) != 1 ||
 HIBYTE( wsaData.wVersion ) != 1 )
         HIBYTE( wsaData.wVersion ) != 1 )  {
{ WSACleanup( );
   WSACleanup( ); return;
  return; }
 } SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);
 SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0); 
  SOCKADDR_IN addrSrv;
 SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
 addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1"); addrSrv.sin_family=AF_INET;
 addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(6000);
 addrSrv.sin_port=htons(6000); connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
 connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); send(sockClient,"hello",strlen("hello")+1,0);
 send(sockClient,"hello",strlen("hello")+1,0); char recvBuf[50];
 char recvBuf[50]; recv(sockClient,recvBuf,50,0);
 recv(sockClient,recvBuf,50,0); printf("%s\n",recvBuf);
 printf("%s\n",recvBuf); 
  closesocket(sockClient);
 closesocket(sockClient); WSACleanup();
 WSACleanup(); }
}
[VC]vc中socket编程步骤的更多相关文章
- c++ socket编程步骤
		sockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW):基于TCP的socket编程是采用的流式套接字. 服务器 ... 
- C++ Socket编程步骤 【转】
		sockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW):基于TCP的socket编程是采用的流式套接字. 服务器 ... 
- c++中Socket编程(入门)
		转载 :http://www.cnblogs.com/L-hq815/archive/2012/07/09/2583043.html 但该作者也是转载,国外网站翻译之作 本人在学习Socket编程时, ... 
- Delphi的Socket编程步骤(repulish)
		转贴自:http://topic.csdn.net/t/20010727/16/212155.html ClientSocket 和ServerSocket几个重要的属性: 1.client和se ... 
- python中socket编程
		一.网络协议 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构(互联网中处处是C/S架构):B/S架构也是C/S架构的一种,B/S是浏览器/服务器 C/S架构与socket的关系: ... 
- Delphi的Socket编程步骤
		ClientSocket 和ServerSocket几个重要的属性: 1.client和server都有port属性,需要一致才能互相通信 2.client有Address属性,使用时填写对方 ... 
- C#中Socket编程解决应用程序直接的通信
		using System;using System.Collections.Generic;using System.Linq;using System.Text; using System.Net; ... 
- C++中socket编程
		原文:http://blog.csdn.net/cuiran/article/details/5854794 Server端 #include <WINSOCK2.H> #include ... 
- Python中Socket编程(TCP、UDP)
		1. TCP协议下的如何解决粘包问题 TCP(transport control protocol 传输控制协议) 使用Nagle算法,将多次间隔较小且数据量小的数据,合并成大的数据块:接受端无法识 ... 
随机推荐
- FreeSql 新功能介绍:贪婪加载五种方法
			前言 FreeSql 在经过6个月的开发和朋友们的工作实践,不断的改进创新,目前拥有1500个左右单元测试方法,且每个方法内又复盖不同的测试面. 今天介绍 FreeSql 各种贪婪加载的姿势,作下总结 ... 
- 远程桌面连接KVM虚拟机
			问题描述 有些时候,由于网络存在问题,虚拟机无法获取到IP地址,无法使用spice或vnc来连接虚拟机,但是又需要连到虚拟机来排查故障 解决办法 编辑虚拟机配置 设置xml命名空间 <domai ... 
- ElasticSearch 学习一: 基本命令
			1. 启动时指定集群和节点的名字./elasticsearch -Ecluster.name=my_cluster_name -Enode.name=my_node_namee.g. ./elasti ... 
- informix 入门简单笔记
			informix 查看数据库 服务名字 onstat -c | grep DBSERVER 例如: DBSERVERNAME easycon # Name of default database se ... 
- JMeter - 连续性能测试 - JMeter + ANT + Jenkins集成 - 第2部分
			目标: 创建包含性能测试流程的持续交付管道,以尽早检测任何与性能相关的问题. 通常,全面的性能测试将在分段/预生产环境中完成,该环境可能与您的生产环境相同.在完成QA功能/回归验证后,将代码推送到分段 ... 
- Poj 2096 (dp求期望 入门)
			/ dp求期望的题. 题意:一个软件有s个子系统,会产生n种bug. 某人一天发现一个bug,这个bug属于某种bug,发生在某个子系统中. 求找到所有的n种bug,且每个子系统都找到bug,这样所要 ... 
- 同源策略与CORS跨域请求
			一.同源策略 1.简介 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源 ... 
- 得到RequestVO
			import java.io.IOException; import java.nio.charset.Charset; import javax.servlet.ServletInputStream ... 
- Bellman_Ford算法(求一个点到任意一点的最短距离)
			单源最短路问题是固定一个起点,求它到任意一点最短路的问题. 记从起点出发到顶点 i 的最短距离为d[i],则有以下等式成立 d[i]=min{d[j]+(从j到 i 的边的权值) 看代码 #inclu ... 
- 用mvc模式,整理前两次的代码并增加登陆注册
			简单的servlet连接mysql数据库 使用mvc的登录注册 commons-dbutils-1.6 mysql-connector-java-5.1.40-bin c3p0-0.9.5.2 mch ... 
