socket建立服务端和客户端之间通信
来源:互联网 发布:mac繁体字体下载 编辑:程序博客网 时间:2024/05/04 16:06
Windows操作系统提供了选择(select)、异步选择(WSAAsyncSelect)、事件选择(WSAEventSelect)、重叠I/O(Overlapped I/O)和完成端口(Completion Port)共五种I/O模型。每一种模型均使用于一种特定的应用场景。程序员应该对自己的应用需求非常明确,并且综合考虑到程序的拓展性和可移植性等因素,而选择不同的模式。
利用socket建立服务端和客户端之间通信。
服务端:
过程:WSAStartup——> socket —— >bind——>listen——>accept——>(read/write)——>close ——>WSAClearup
#include "stdafx.h"
#include "winsock2.h"
int _tmain(int argc, _TCHAR* argv[])
{
//int a;
WSADATA wsaData;
SOCKET ListeningSocket;
SOCKET NewConnection;
SOCKADDR_IN ServerAddr;
SOCKADDR_IN ClientAddr;
int Port = 5566;
//初始化windows socket2.2
WSAStartup(MAKEWORD(2,2), &wsaData);//2.2版本socket
//创建socket来连接客户端
ListeningSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
ServerAddr.sin_family = AF_INET;
ServerAddr.sin_port = htons(Port);
ServerAddr.sin_addr.s_addr = htonl(INADDR_ANY);
//绑定地址,端口
bind(ListeningSocket, (SOCKADDR*)&ServerAddr, sizeof(ServerAddr));
// 开始监听客户端
listen(ListeningSocket, 5);//开始监听,指定最大连接数为5个
while(1)
{
// 等待客户端连接
NewConnection = accept(ListeningSocket, (SOCKADDR*)&ClientAddr, NULL);
if (NewConnection == SOCKET_ERROR)
{
continue;
}
///可以在这里实现与客户端之间通信
Sleep(5000);
break;
}
//关闭socket监听
closesocket(NewConnection);
closesocket(ListeningSocket);
WSACleanup();
return 0;
}
客户端
过程:WSAStartup——>socket ——>connect ——>read/write——>closesocket——>WSACleanup
#include "stdafx.h"
#include "winsock2.h"
int _tmain(int argc, _TCHAR* argv[])
{
WSADATA wsaData;
SOCKET clientsocket;
SOCKADDR_IN ServerAddr;
int Port = 5566;
WSAStartup(MAKEWORD(2, 2), &wsaData);
clientsocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
ServerAddr.sin_family = AF_INET;
ServerAddr.sin_port = htons(Port);
ServerAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
connect(clientsocket, (SOCKADDR*)&ServerAddr, sizeof(ServerAddr));
//与服务端之间进行通信
Sleep(5000);
closesocket(clientsocket);
WSACleanup();
return 0;
}
如果在编译时出现LNK2019的错误, 在link的Input中添加WS2_32.lib库文件即可解决。
- socket建立服务端和客户端之间通信
- Socket服务端和客户端通信
- socket服务端和客户端通信
- 简单的Socket通信客户端和服务端
- C#socket通信(客户端和服务端)
- 基于服务端和客户端之间的通信
- WCF客户端与服务端之间建立通信的几个要点
- socket编程(二)通过服务端实现客户端之间通信
- Socket 客户端和服务端无限次通信,多个客户端和服务端通信的例子
- socket通信 客户端与服务端
- socket实现客户端和客户端之间通信和聊天
- socket 客户端和服务端的TCP基本通信
- Android手机 (客户端)和PCweb 端(服务端)的socket通信
- Windows下C++服务端和客户端Socket通信简单代码
- 安卓手机socket通信(服务端和客户端)
- Socket实现手机客户端和PC机服务端通信
- 采用异步socket实现客户端和服务端的通信
- Delphi服务端和PHP客户端通过Socket通信
- java判断回文字符串的几种方法
- poj 2081 Recaman's Sequence
- 【Himi转载推荐之一】优化cocos2d/x程序的内存使用和程序大小【一】
- 旋转字符串
- OSEck中odo_vect2pcb的作用
- socket建立服务端和客户端之间通信
- c99之 柔性数组成员
- STL源码剖析 容器 stl_set.h
- 加了锁的单例模式取对象
- .net中使用母版页后获取服务器控件的ID
- Yu Ji
- 正则表达式中最常见的符号和字符
- Spring框架之Filter应用
- Cocos2d-x Sprite 执行 CCFade~ 这类透明度变化动作的一些问题