收藏 分销(赏)

服务端与接收端.docx

上传人:pc****0 文档编号:6271702 上传时间:2024-12-04 格式:DOCX 页数:7 大小:19.64KB 下载积分:10 金币
下载 相关 举报
服务端与接收端.docx_第1页
第1页 / 共7页
服务端与接收端.docx_第2页
第2页 / 共7页


点击查看更多>>
资源描述
Sever.cpp #include <WinSock2.h> #include <iostream> #pragma comment(lib, "ws2_32.lib") #include "Encode.h" using namespace std; #define BUF_SIZE 1030 int main() { WSADATA wsd; SOCKET sServer; SOCKET sClient; SOCKADDR_IN addrServ; int retVal; char buf[BUF_SIZE]; unsigned char sendBuf[BUF_SIZE]={0}; //初始化套结字动态库 if (WSAStartup(MAKEWORD(2,2), &wsd) != 0) { cout << "WSAStartup failed!" << endl; return 1; } //创建套接字 sServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(INVALID_SOCKET == sServer) { cout << "socket failed!" << endl; WSACleanup();//释放套接字资源; return -1; } //服务器套接字地址 addrServ.sin_family = AF_INET; addrServ.sin_port = htons(4999); addrServ.sin_addr.s_addr = INADDR_ANY; //绑定套接字 retVal = bind(sServer, (LPSOCKADDR)&addrServ, sizeof(SOCKADDR_IN)); if(SOCKET_ERROR == retVal) { cout << "bind failed!" << endl; closesocket(sServer); //关闭套接字 WSACleanup(); //释放套接字资源; return -1; } //开始监听 retVal = listen(sServer, 1); if(SOCKET_ERROR == retVal) { cout << "listen failed!" << endl; closesocket(sServer); //关闭套接字 WSACleanup(); //释放套接字资源; return -1; } //接受客户端请求 sockaddr_in addrClient; int addrClientlen = sizeof(addrClient); sClient = accept(sServer,(sockaddr FAR*)&addrClient, &addrClientlen); if(INVALID_SOCKET == sClient) { cout << "accept failed!" << endl; closesocket(sServer); //关闭套接字 WSACleanup(); //释放套接字资源; return -1; } //----------以下只是为了编造一些数据进行试验-------------// int time=1000; int interval1=30; int height=101; int deg=2; int ord=2; int c[100]; int s[100]; //不要定义为int s[]={0};容易出错 //---------------------------------------------------------------------// while(true){ //接收客户端数据 ZeroMemory(buf, BUF_SIZE); retVal = recv(sClient, buf, BUF_SIZE, 0); if (SOCKET_ERROR == retVal) { cout << "recv failed!" << endl; closesocket(sServer); //关闭套接字 closesocket(sClient); //关闭套接字 WSACleanup(); //释放套接字资源; return -1; } if(buf[0] == '0') break; cout << "客户端发送的数据: " << buf <<endl; //------------------------------------------------------------// int N=deg; int M=ord; int CNum=(2*N+2-M)*(M+1)/2; int SNum=(2*N+1-M)*M/2; int a; for (int i=0;i<CNum;i++) { a=i+1; c[i]=a; } for (int i=0;i<SNum;i++) { a=i+1; s[i]=a; } //---------------------------------------------------------------------// int byteused1; EnCode ec; //ZeroMemory(sendBuf, BUF_SIZE); ec.IonoEncode(time, interval1, height,deg,ord,c,s,sendBuf,&byteused1); //------------------------------------------------------// time++; height++; deg++; ord++; /* int N=deg; int M=ord; int CNum=(2*N+2-M)*(M+1)/2; int SNum=(2*N+1-M)*M/2; for (int i=0;i<CNum;i++) { c[i]=i+1; } for (int i=0;i<SNum;i++) { s[i]=i+1; }*/ /* for (int i=0;i<byteused1;i++) { cout<<sendBuf[i]<<endl; } */ send(sClient, (const char *)sendBuf,byteused1, 0); } //退出 closesocket(sServer); //关闭套接字 closesocket(sClient); //关闭套接字 WSACleanup(); //释放套接字资源; return 0; } Client.cpp // Client.cpp : Defines the entry point for the console application. #include "winsock2.h" #include <iostream> #pragma comment(lib, "ws2_32.lib") #include "Decode.h" using namespace std; int main(int argc, char* argv[]) { const int BUF_SIZE = 1030; WSADATA wsd; //WSADATA变量 SOCKET sHost; //服务器套接字 SOCKADDR_IN servAddr; //服务器地址 char buf[BUF_SIZE]; //接收数据缓冲区 char bufRecv[BUF_SIZE]={'0'}; int retVal; //返回值 //初始化套结字动态库 if (WSAStartup(MAKEWORD(2,2), &wsd) != 0) { cout << "WSAStartup failed!" << endl; return -1; } //创建套接字 sHost = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(INVALID_SOCKET == sHost) { cout << "socket failed!" << endl; WSACleanup();//释放套接字资源 return -1; } //设置服务器地址 servAddr.sin_family =AF_INET; servAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); servAddr.sin_port = htons((short)4999); int nServAddlen = sizeof(servAddr); //连接服务器 retVal=connect(sHost,(LPSOCKADDR)&servAddr, sizeof(servAddr)); if(SOCKET_ERROR == retVal) { cout << "connect failed!" << endl; closesocket(sHost); //关闭套接字 WSACleanup(); //释放套接字资源 return -1; } int c; while(true){ //向服务器发送数据 ZeroMemory(buf, BUF_SIZE); cout << " 向服务器发送数据: "; cin >> buf; retVal = send(sHost, buf, strlen(buf), 0); if (SOCKET_ERROR == retVal) { cout << "send failed!" << endl; closesocket(sHost); //关闭套接字 WSACleanup(); //释放套接字资源 return -1; } //RecvLine(sHost, bufRecv); ZeroMemory(bufRecv, BUF_SIZE); c=recv(sHost, bufRecv,1030 , 0); cout << endl <<"从服务器接收数据:"<<bufRecv<<endl ; /* for (int i=0;i<BUF_SIZE;i++) { cout<<"从服务器接收数据:" << bufRecv[i]<<endl; } /cout<<bufRecv[0]<<endl;*/ int decodeIndex=0; while(true){ int bytesused=0; __int64 MessLength=0; //有效信息长度 int interval=0; code tcode; Decode dc; int i; dc.IonoDecode((unsigned char*)(bufRecv+decodeIndex),c-decodeIndex,tcode,&bytesused,&interval,&MessLength); //MessLength为有效数据字节数 if(c-decodeIndex<(3+MessLength+3)) { printf("解码完成\n"); break; } if (bytesused==0) { printf("解码完成\n"); break; } decodeIndex+=bytesused; printf("tcode.MessNum:%d\ttcode.EpochTime:%d\n",int(tcode.MessNum),int(tcode.EpochTime)); printf("球谐系数C:"); int N=tcode.SpheHarmoDeg; int M=tcode.SpheHarmoOrd; int CNum=(2*N+2-M)*(M+1)/2; int SNum=(2*N+1-M)*M/2; for(i=0;i<CNum;i++) { printf("%d ",tcode.Shc[i]); } printf("\n"); printf("球谐系数S:"); for(i=0;i<SNum;i++) { printf("%d ",tcode.Shs[i]); } } } //退出 closesocket(sHost); //关闭套接字 WSACleanup(); //释放套接字资源 return 0; }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服