c - visual c ++ winSock 连接到vps,vds服务器,客户端和服务器等待连接,如何修复?
问题描述
visual c ++ winSok 作为客户端连接到 vds,vps 服务器 (_____-ip)。您好,问题是这样的:我正在编写一个应用程序,它应该可以通过 Internet 运行。因此,您需要一个应用程序应该连接到的服务器(物理和软件)(事实上,我买了一个带有专用 ip 的机载单元),并且在测试期间,当尝试调试时,什么都不清楚。决定编写一个类似于聊天的测试应用程序。而当你尝试的时候,根本就没有连接,也就是根本没有显示“You client (socket:”和“You server (socket:”)这样的消息,这可能是什么问题?
#include "pch.h"
#pragma comment(lib, "ws2_32.lib")
#include <cmath>
#include <winsock2.h>
#pragma warning(disable: 4996)
#pragma comment (lib, "user32.lib")
#include "windows.h"
#include "iostream"
#include "dos.h"
#include "stdio.h"
#include "winuser.h"
#include "Windef.h"
#include <fstream>
#include <thread>>
SOCKET h;
SOCKET createServer(const char * ip, long port) //function init socket: conection colient
{
SOCKET client;
SOCKET connectRecept;//socket for litening conection client
SOCKADDR_IN dataC;
int sizeofData = sizeof(dataC); //to use in accept and init data socket
dataC.sin_addr.s_addr = inet_addr(ip);
dataC.sin_port = htons(port);
dataC.sin_family = AF_INET;
connectRecept = socket(AF_INET, SOCK_STREAM, NULL); //init socket
bind(connectRecept, (SOCKADDR*)&dataC, sizeofData);
listen(connectRecept, 1);
client = accept(connectRecept, (SOCKADDR*)&dataC, &sizeofData);
return client;
}
SOCKET conectTo(const char * ip, long port)//function conection to server(return socket)
{
SOCKET server;
SOCKADDR_IN dataC;
int sizeofData = sizeof(dataC); //to use in init data socket
dataC.sin_addr.s_addr = inet_addr(ip);
dataC.sin_port = htons(port);
dataC.sin_family = AF_INET;
server = socket(AF_INET, SOCK_STREAM, NULL); //init socket
bind(server, (SOCKADDR*)&dataC, sizeof(dataC));
if (connect(server, (SOCKADDR*)&dataC, sizeof(dataC)) != 0) { //conect to server
}
return server;
}
int main()
{
WSAData wsaData;
WORD DLLVersion = MAKEWORD(2, 1);
if (WSAStartup(DLLVersion, &wsaData) != 0) {
std::cout << "Error" << std::endl;
exit(1);
}
char f[40] = { "" };
std::cin >> f;
char mess[41] = { "" };
if (!strcmp(f, "cl")) {
h = conectTo("________", 1297);
std::cout << "You client (socket : "<< h << ")\n";
while (true)
{
std::cout << "Write your Messaage:";
std::cin >> mess;
send(h, mess, sizeof(char) * 40, NULL);
recv(h, mess, sizeof(char) * 40, NULL);
std::cout <<"Server say:" << mess;
}
}
else {
h = createServer("________", 1297);
std::cout << "You server (socket : " << h << ")\n";
while (true)
{
recv(h, mess, sizeof(char) * 40, NULL);
std::cout << "Client" << mess;
std::cin >> mess;
std::cout << "Write your Messaage:";
send(h, mess, sizeof(char) * 40, NULL);
}
}
}
解决方案
推荐阅读
- csv - 将数据从 SSRS 导出到 .csv 文件会添加大量引号,如何只获得一组?
- java - 无法创建应用程序数据(打开的文件太多)
- windows - 我是 OpenJDK 新手,刚刚下载了 11 版。如何安装它?我从 Git 下载了一个安装程序,但它似乎没有用
- javascript - 如何将 Javascript DataView 对象转换回 python 字节类型?
- amazon-web-services - AWS RDS Aurora - 跨区域只读副本同时具有写入和读取实例?
- css - ReactJS 过渡不适用于类或模块。任何提示
- java - @AutoValue 编译失败:方法不对应于的属性
- google-analytics - 使用 Measurement Protocol 向 Google Analytics 4 发送事件时,client_id 应该是什么?
- postgresql - 在 PGSQL 中通过合并处理布尔的空字符串
- javascript - 未捕获的类型错误:无法读取本地主机上未定义的属性“添加”-Wordpress