windows 环境下c++ socket编程
来源:互联网 发布:淘宝客服怎么设置多个 编辑:程序博客网 时间:2024/05/25 01:35
windows下socket的最基本的操作。。。。都是套路模版。。。。感觉看文档照抄即可。
实现了一个回声服务器。
服务器端
#define _WINSOCK_DEPRECATED_NO_WARNINGS#include <winsock2.h> #include<iostream>#include<string>#pragma comment (lib, "ws2_32.lib") //加载 ws2_32.dll #define BUF_SIZE 10086//using namespace std; //直接用std好像会出现bugusing std::cout;int main() {//初始化dllWSADATA wsaData;WSAStartup(MAKEWORD(2, 2), &wsaData);//创建套接字 SOCKET servSock = socket(AF_INET, SOCK_STREAM, 0);//绑定套接字 sockaddr_in sockAddr;memset(&sockAddr, 0, sizeof(sockAddr)); //每个字节都用0填充 sockAddr.sin_family = PF_INET; //使用IPv4地址 sockAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); //回送IP地址 sockAddr.sin_port = htons(1234); //端口 bind(servSock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR));//进入监听状态 listen(servSock, 20);//接收客户端请求 SOCKADDR clntAddr;int nSize = sizeof(SOCKADDR);char buffer[BUF_SIZE] = { 0 }; //缓冲区 while (1) {SOCKET clntSock = accept(servSock, (SOCKADDR*)&clntAddr, &nSize);int strLen = recv(clntSock, buffer, BUF_SIZE, 0); //接收客户端发来的数据 send(clntSock, buffer, strLen, 0); //将数据原样返回 closesocket(clntSock); //关闭套接字 memset(buffer, 0, BUF_SIZE); //重置缓冲区 }//关闭套接字 closesocket(servSock);//终止 DLL 的使用 WSACleanup();return 0;}
客户端
#define _WINSOCK_DEPRECATED_NO_WARNINGS#include <stdio.h> #include<iostream>#include <stdlib.h> #include <WinSock2.h> #pragma comment(lib, "ws2_32.lib") //加载 ws2_32.dll #define BUF_SIZE 10086using std::cout;using std::cin;using std::endl;/*WinSock2.h 中的一些宏定义#define PF_INET AF_INET#define AF_UNSPEC 0 // unspecified#define AF_UNIX 1 // local to host (pipes, portals)#define AF_INET 2 // internetwork: UDP, TCP, etc.#define AF_IMPLINK 3 // arpanet imp addresses#define AF_PUP 4 // pup protocols: e.g. BSP#define AF_CHAOS 5 // mit CHAOS protocols#define AF_NS 6 // XEROX NS protocols#define SOCK_STREAM 1 // stream socket#define SOCK_DGRAM 2 // datagram socket*/int main() {//初始化DLL WSADATA wsaData;WSAStartup(MAKEWORD(2, 2), &wsaData);//向服务器发起请求 sockaddr_in sockAddr;memset(&sockAddr, 0, sizeof(sockAddr)); //每个字节都用0填充 sockAddr.sin_family = PF_INET;sockAddr.sin_addr.s_addr = inet_addr("127.0.0.1");//回送地址sockAddr.sin_port = htons(1234);char bufSend[BUF_SIZE] = { 0 };char bufRecv[BUF_SIZE] = { 0 };while (1){//创建套接字 SOCKET sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);connect(sock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR));//获取用户输入的字符串并发送给服务器 cout << "输入";cin >> bufSend;send(sock, bufSend, strlen(bufSend), 0);//接收服务器传回的数据 recv(sock, bufRecv, BUF_SIZE, 0);//输出接收到的数据 cout << "服务器传送回的数据为:" << bufRecv << endl;memset(bufSend, 0, BUF_SIZE); //重置缓冲区 memset(bufRecv, 0, BUF_SIZE); //重置缓冲区 closesocket(sock); //关闭套接字}WSACleanup(); //终止使用 DLL return 0;}
运行截图
下一步实现多线程服务器。
阅读全文
0 0
- windows 环境下c++ socket编程
- c在Windows下的socket编程
- windows下 socket编程
- windows 下socket 编程
- windows环境下Socket编程的几种模式
- windows环境下Socket编程的几种模式
- windows环境下Socket编程的几种模式
- windows环境下Socket编程的几种模式
- windows环境下Socket编程的几种模式
- windows环境下Socket编程的几种模型
- windows环境下用c++实现socket编程
- socket编程之UDP(windows环境下C++实现)
- Windows系统下C++socket TCP编程步骤
- 纯C下Windows Socket编程之TCP
- Linux环境下Socket编程
- Linux环境下Socket编程
- Linux环境下Socket编程
- Linux环境下Socket编程
- 【C++程序设计】-特殊函数和成员
- Android 杀不死的进程
- equals()方法的重写
- Doctype作用?严格模式与混杂模式如何区分?它们有何意义?
- 【C++程序设计】-继承和派生
- windows 环境下c++ socket编程
- 作业二 双向链表
- BZOJ 3732 Network Kruskal+倍增
- 单链表中的冒泡排序(有头节点)
- 【C++程序设计】-类模板与向量
- Linux安装软件时出现无法修正错误的解决方法
- bzoj2427 软件安装
- java线程之间的调度使用wait/notify,await/single,LinkBlockingQuene实现
- 实验三十进制转二进制