// client.cpp : 定義控制臺應用程序的入口點。//#include "stdafx.h"#include "client.h"#ifdef _DEBUG#define new DEBUG_NEW#endif#include"Winsock2.h"#include"stdio.h"#include"stdlib.h"#include"stdafx.h"#define DEFAULT_PORT 5050 //服務器端口號為5050#define DATA_BUFFER 1024// 唯一的應用程序對象CWinApp theApp;using namespace std;int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]){int nRetCode = 0;// 初始化 MFC 并在失敗時顯示錯誤if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)){// TODO: 更改錯誤代碼以符合您的需要_tprintf(_T("錯誤: MFC 初始化失敗\n"));nRetCode = 1;}else{// TODO: 在此處為應用程序的行為編寫代碼。}return nRetCode;}void main(int argc,char *argv[]){WSADATA wsaData;SOCKET sClient;int iPort=DEFAULT_PORT;int iLen; //從服務器接受的數據長度char buf[DATA_BUFFER];struct sockaddr_in ser; //判斷輸入是否正確if(argc<2){printf("Usage:client[server IP address]\n"); //提示在命令中輸入服務器IP地址return;}//接收數據的緩沖初始化memset(buf,0,sizeof(buf));if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0){printf("Failed to load Winsock.\n");return;}//填寫要連接的服務器地址信息ser.sin_family=AF_INET; ser.sin_port=htons(iPort);ser.sin_addr.s_addr=inet_addr(argv[1]); //inet_addr()函數將命令行的點分IP地址轉化為用二進制表示的網絡字節順序的IP地址//建立客戶端流式套接口sClient=socket(AF_INET,SOCK_STREAM,0);if(sClient==INVALID_SOCKET){printf("socket()Failed:%d\n",WSAGetLastError());return;}//請求與服務器端建立TCP連接if(connect(sClient,(struct sockaddr*)&ser,sizeof(ser))==INVALID_SOCKET){printf("connect()Failed:%d\n",WSAGetLastError());return;}else{//從服務器端接受數據iLen=recv(sClient,buf,sizeof(buf),0);if(iLen==0)return;else if(iLen==SOCKET_ERROR){printf("rev()Failed:%d\n",WSAGetLastError());return;}printf("recv()data from server:%s\n",buf);}closesocket(sClient);WSACleanup();}C++控制臺程序Win32 Console Application是基于TCP的通信程序(客戶端)
- 1 回答
- 0 關注
- 109 瀏覽
添加回答
舉報
0/150
提交
取消