C++服务器与android客户端通信程序————C++服务器程序
来源:互联网 发布:字幕自动生成软件 编辑:程序博客网 时间:2024/06/05 11:09
#include <stdio.h>
#include <winsock2.h>
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
#define SERVER_PORT 8521 //侦听端口
void main()
{
int i;
WORD wVersionRequested;
WSADATA wsaData;
char receiveMessage[50],meg[50];
int ret, nLeft, length;
SOCKET sListen, sServer; //侦听套接字,连接套接字
struct sockaddr_in saServer, saClient; //地址信息
char* ptr;//用于遍历信息的指针
//WinSock初始化
wVersionRequested=MAKEWORD(2, 2); //希望使用的WinSock DLL 的版本
ret=WSAStartup(wVersionRequested, &wsaData);
if(ret!=0)
{
printf("WSAStartup() failed!\n");
return;
}
//创建Socket,使用TCP协议
sListen=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sListen == INVALID_SOCKET)
{
WSACleanup();
printf("socket() faild!\n");
return;
}
//构建本地地址信息
saServer.sin_family = AF_INET; //地址家族
saServer.sin_port = htons(SERVER_PORT); //注意转化为网络字节序
saServer.sin_addr.S_un.S_addr = htonl(INADDR_ANY); //使用INADDR_ANY 指示任意地址
//绑定
ret = bind(sListen, (struct sockaddr *)&saServer, sizeof(saServer));
if (ret == SOCKET_ERROR)
{
printf("bind() faild! code:%d\n", WSAGetLastError());
closesocket(sListen); //关闭套接字
WSACleanup();
return;
}
//侦听连接请求
ret = listen(sListen, 5);
if (ret == SOCKET_ERROR)
{
printf("listen() faild! code:%d\n", WSAGetLastError());
closesocket(sListen); //关闭套接字
return;
}
printf("Waiting for client connecting!\n");
printf("Tips: Ctrl+c to quit!\n");
//阻塞等待接受客户端连接
while(1)//循环监听客户端,永远不停止,所以,在本项目中,我们没有心跳包。
{
length = sizeof(saClient);
sServer = accept(sListen, (struct sockaddr *)&saClient, &length);
printf("%s\n",inet_ntoa(saClient.sin_addr));
if (sServer == INVALID_SOCKET)
{
printf("accept() faild! code:%d\n", WSAGetLastError());
closesocket(sListen); //关闭套接字
WSACleanup();
return;
}
nLeft = sizeof(receiveMessage);
ptr = receiveMessage;
while(1)
{
ptr = &receiveMessage[0];
//接收数据
ret = recv(sServer, ptr, nLeft, 0); //返回接收长度,以及把接收内容存ptr;
if (ret == SOCKET_ERROR)
{
printf("recv() failed!\n");
return;
}
if (ret == 0) //客户端已经关闭连接
{
printf("Client has closed the connection\n");
break;
}
}
for(i=0;i<ret;i++)
meg[i] = receiveMessage[i];
meg[ret] = '\0';
printf("%s\n", meg);
}
}
closesocket(sListen);
closesocket(sServer);
WSACleanup();
}
- C++服务器与android客户端通信程序————C++服务器程序
- Linux C——UDP通信服务器与客户端
- 基于scoket通信的简单客户端—服务器通信程序
- 客户端与服务器程序通信
- C/S(客户端/服务器) TCP通信聊天程序
- Linux C——TCP客户端服务器通信
- C 版本聊天室 C/S架构——服务器程序
- C#TcpClient TcpListener客户端服务器程序
- java通信——多客户端与服务器通信
- linux socket通信编程之c语言(客户端和服务器程序)
- Android BLE与终端通信(四)——实现服务器与客户端即时通讯功能
- Android BLE与终端通信(四)——实现服务器与客户端即时通讯功能
- 客户端与服务器通信中的安全使者——AppSecret
- 服务器与客户端简单通信 ——server
- java socket编程—单客户端与服务器通信
- daytime服务器与客户端(程序)
- java服务器与linux c客户端之间udp通信
- 【C#】Socket客户端与服务器的简单通信
- myeclipse设置字体快捷方式
- 铁道部新客票系统的设计(一)
- Java JNI学习(二)
- hdu 3436 Queue-jumpers(Splay)
- 虚析构函数
- C++服务器与android客户端通信程序————C++服务器程序
- oracle多表关联update语句
- 铁道部新客票系统的设计(二)
- openstack维护过程中遇到的问题
- 做技术需要有专研的精神
- 铁道部新客票系统的设计(三)
- svn使用别名 映射ip,出差时候就方便多了
- ZOJ 1005 Jugs(模拟 special judge,也可以BFS)
- 邮箱有效性检测(nslookup -q=mx)