源代码项目下载:http://download.csdn.net/detail/mmyzlinyingjie/7049499

TCP类的:

TcpServer.cpp

//WSAStartup socket bind listen accept send/recv closesocket WSACleanup
#include <winsock2.h>
#include <stdio.h>
#include <iostream>
#include <windows.h>
using namespace std;
#pragma comment (lib,"ws2_32")
#pragma comment (lib,"winmm") #define NAME_LEN 20 int main(int argc , char* grgv[])
{ cout<<"This is Server cmd"<<endl;
WSADATA wsaData;
WSAStartup(MAKEWORD(,),&wsaData); //这个是服务器的socket,用来绑定网卡来监听
SOCKET s = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP); sockaddr_in addr;
addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
addr.sin_port = htons();
addr.sin_family = PF_INET; bind(s,(SOCKADDR*)&addr,sizeof(SOCKADDR)); listen(s,); SOCKADDR clientAddr;
int nSize = sizeof(SOCKADDR); //这个socket用来接收客户端发过来的信息
SOCKET clientSock; //阻塞式,有客户端来连接时才会往下执行
//执行到这一步,说明客户端和服务器已经建立了连接
clientSock = accept(s,(SOCKADDR*)&clientAddr,&nSize); cout<<"sending..."<<endl;
send(clientSock,"hello client \r\n",strlen("hello client \r\n" + sizeof(char)),NULL);
cout<<"sended"<<endl; //不断的接收客户端发送过来的信息
while(TRUE)
{ char buff[MAXBYTE] = {};
//接收客户端发来的命令
int i=;
i = recv(clientSock,buff,MAXBYTE,);
if(i != -)
cout<<"from client :"<<buff<<endl; } closesocket(clientSock);
closesocket(s); WSACleanup();
return ;
}

TcpClient.cpp

#include <stdio.h>
#include <winsock2.h>
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
#pragma comment (lib,"ws2_32") #define NAME_LEN 20 int main(int argc,char* argv[])
{
cout<<"This is Client cmd"<<endl;
WSADATA wsaData;
WSAStartup(MAKEWORD(,),&wsaData); //创建一个socket来连接服务端
SOCKET s = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP); sockaddr_in addr;
addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
addr.sin_family = PF_INET;
addr.sin_port = htons(); //这条执行后,说明和服务端建立了连接
connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR)); char Buff[MAXBYTE] = {};
char Cmd[MAXBYTE] = {};
recv(s,Buff , MAXBYTE,);
cout<<"from server:"<<Buff<<endl; //不断地给服务端发送信息
while(TRUE)
{
cin>>Cmd;
cout<<"you input command is:"<<Cmd<<endl;
send(s,Cmd,MAXBYTE,); }
getchar();
WSACleanup();
return ;
}

运行结果:

UDP:

UDPServer.cpp

#include <winsock2.h>
#include <stdio.h>
#include <iostream>
#include <windows.h>
using namespace std;
#pragma comment (lib,"ws2_32")
#pragma comment (lib,"winmm") int main(){ printf("This is UDP Server\n"); WORD wVersionRequested;
WSADATA wsaData; wVersionRequested = MAKEWORD( , );
WSAStartup( wVersionRequested, &wsaData ); SOCKET socketServer = socket(AF_INET,SOCK_DGRAM,); SOCKADDR_IN addr;
addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
addr.sin_family = AF_INET;
addr.sin_port = htons(); bind(socketServer,(SOCKADDR*)&addr,sizeof(SOCKADDR)); int len = sizeof(SOCKADDR);
SOCKADDR_IN addrClient;
char buf[];
recvfrom(socketServer,buf,sizeof(buf),,(SOCKADDR*)&addrClient,&len);
printf("%s",buf); closesocket(socketServer);
WSACleanup();
return ;
}

UDPClient.cpp

#include <winsock2.h>
#include <stdio.h>
#include <iostream>
#include <windows.h>
using namespace std;
#pragma comment (lib,"ws2_32")
#pragma comment (lib,"winmm")
int main(){ printf("This is UDP Client\n");
WORD wVersionRequested;
WSADATA wsaData; wVersionRequested = MAKEWORD( , );
WSAStartup( wVersionRequested, &wsaData ); SOCKET socketClient = socket(AF_INET,SOCK_DGRAM,); SOCKADDR_IN addr;
addr.sin_addr.S_un.S_addr = inet_addr("10.21.23.117");//"10.21.23.117"是你要发送的目的地
addr.sin_family = AF_INET;
addr.sin_port = htons(); char buf[];
sprintf(buf,"i MYNONA from cclient\n",inet_ntoa(addr.sin_addr));
sendto(socketClient,buf,sizeof(buf)+,,(SOCKADDR*)&addr,sizeof(SOCKADDR)); closesocket(socketClient);
WSACleanup(); return ;
}

运行结果:

C++ socket编程的更多相关文章

  1. Linux下的C Socket编程 -- server端的继续研究

    Linux下的C Socket编程(四) 延长server的生命周期 在前面的一个个例子中,server在处理完一个连接后便会立即结束掉自己,然而这种server并不科学啊,server应该是能够一直 ...

  2. java socket编程(li)

    一.网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输.在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以 ...

  3. Python Socket 编程——聊天室示例程序

    上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ...

  4. Linux下的C Socket编程 -- server端的简单示例

    Linux下的C Socket编程(三) server端的简单示例 经过前面的client端的学习,我们已经知道了如何创建socket,所以接下来就是去绑定他到具体的一个端口上面去. 绑定socket ...

  5. Linux下的C Socket编程 -- 获取对方IP地址

    Linux下的C Socket编程(二) 获取域名对应的IP地址 经过上面的讨论,如果我们想要连接到远程的服务器,我们需要知道对方的IP地址,系统函数gethostbyname便能够实现这个目的.它能 ...

  6. Linux下的C Socket编程 -- 简介与client端的处理

    Linux下的C Socket编程(一) 介绍 Socket是进程间通信的方式之一,是进程间的通信.这里说的进程并不一定是在同一台机器上也有可能是通过网络连接的不同机器上.只要他们之间建立起了sock ...

  7. python网络编程-socket编程

     一.服务端和客户端 BS架构 (腾讯通软件:server+client) CS架构 (web网站) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 二.OSI七层 ...

  8. Socket编程实践(2) Socket API 与 简单例程

    在本篇文章中,先介绍一下Socket编程的一些API,然后利用这些API实现一个客户端-服务器模型的一个简单通信例程.该例子中,服务器接收到客户端的信息后,将信息重新发送给客户端. socket()函 ...

  9. Socket编程实践(1) 基本概念

    1. 什么是socket socket可以看成是用户进程与内核网络协议栈的编程接口.TCP/IP协议的底层部分已经被内核实现了,而应用层是用户需要实现的,这部分程序工作在用户空间.用户空间的程序需要通 ...

  10. [转]C语言SOCKET编程指南

    1.介绍 Socket编程让你沮丧吗?从man pages中很难得到有用的信息吗?你想跟上时代去编Internet相关的程序,但是为你在调用 connect() 前的bind() 的结构而不知所措?等 ...

随机推荐

  1. javaScript入门2--变量,作用域,内存

    变量类型:基本类型和引用类型 基本类型上节已经提到.基本类型的值是按值传递的,既改变形参的值不会影响实参 <html> <head> <meta charset=&quo ...

  2. OpenGL ES应用开发实践指南:iOS卷

    <OpenGL ES应用开发实践指南:iOS卷> 基本信息 原书名:Learning OpenGL ES for iOS:A Hands-On Guide to Modern 3D Gra ...

  3. Oracle基础<1>--数据库设计

    一:为什么需要使用数据库设计 数据库设计可以使数据库通过健壮的数据库结构  高效并且健康  的进行工作. 二.数据库设计原则 (数据库设计.系统设计.架构设计) 1.熟悉需求 保证之后需求的变更 不会 ...

  4. 剑指Offer33 第一个只出现一次的字符

    /************************************************************************* > File Name: 33_FirstN ...

  5. Java多线程之锁

    首先是synchronized 关键字 他可以用于声明方法,也可以用于申明代码块.我们看看三个例子: public class SynchronizedDemo1 { public synchroni ...

  6. hdu 2489 最小生成树状态压缩枚举

    思路: 直接状态压缩暴力枚举 #include<iostream> #include<algorithm> #include<cstdio> #include< ...

  7. jQuery .on() 绑定事件无效

    前几天,要在移动端实现一系列的功能,用 HTML + JS. 按照以往的思路,事件绑定就直接 $(document).on "click", "selector" ...

  8. 抽奖随机算法的技术探讨与C#实现

    一.模拟客户需求 1.1 客户A需求:要求每次都按照下图的概率随机,数量不限,每个用户只能抽一次,抽奖结果的分布与抽奖概率近似. 1.2 客户B需求:固定奖项10个,抽奖次数不限,每个用户只能抽一次, ...

  9. Javascript中关于数组的认识

    昨天在练习js中cookie的时候,知道js中的cookie是一个字符串,这与php中的操作cookie还是有很大的差别的,起初我是以php的思维来学习怎么样使用使用js中的cookie. js中的c ...

  10. Linux下用freetds连接mssql中文乱码的问题【参考1】

    由于工作原因我们需要通过php访问我们以前的Sql Server 2005数据,所以就有了这篇文章的诞生.废话就少说了,做程序设计的最不喜欢兜圈子了.用简介步骤说明问题,往下看.系统:   Linux ...