gpt4 book ai didi

c++ - 客户端的socket编程

转载 作者:太空宇宙 更新时间:2023-11-04 04:49:46 26 4
gpt4 key购买 nike

我在 Linux 平台上用 C++ 编写了这个程序。

我写了一个客户端和服务器套接字程序。

在该客户端程序中,我编写了套接字函数,之后我立即执行了一些完全不依赖于套接字的其他操作(我为其他一些逻辑编写了 2 个 for 循环)。

之后,我准备了套接字所需的结构,并编写了连接函数...因为我收到错误,因为无法连接,因为连接返回 -1..

但是对于同一个程序,如果我将 for 循环的逻辑写在套接字函数之上,并紧接着该结构和连接函数,那么它就可以正常工作..

我无法获取的原因可能是什么?请在这方面帮助我。这是我的代码

<小时/>

这里index1和index 2是简单的整数变量..configstring是一个包含127.0.0.1:7005(地址和端口号)的char数组...address和port是存储地址和端口号的char数组变量..

struct sockaddr_in s1;

for(index1=0;configstring[index1]!=':';index1++)
{
address[index1] = configstring[index1];
}
address[index1++]='\0';

for(index2=0;configstring[index1]!='\0';index1++,index2++)
{
port[index2] = configstring[index1];
}
port[index2++]='\0';

int port_num = changeto_int(port);

if((sock_fd = socket(AF_INET,SOCK_STREAM,0)) == -1)
{
printf("unable to create a socket\n");
return 0;
}

s1.sin_family=AF_INET;
s1.sin_port=htons(port_num);
s1.sin_addr.s_addr=inet_addr(address);
memset(s1.sin_zero, '\0', sizeof s1.sin_zero);
int errno;

if(connect(sock_fd,(struct sockaddr *)&s1,sizeof(s1)) == -1)
{
printf("error:unable to connect\n");
printf("Error in connect(): %s\n", strerror( errno));
return -1;
}

最佳答案

首先,永远不要做这样的事情:

int errno;

errno 已为您定义。

除此之外,我建议您使用 perror() 而不是

printf("Error in connect(): %s\n", strerror( errno));

第三,你不能调用 printf 和 strerror( errno) 因为 printf 会改变errno 对成功的值(value)。

第三,我建议看一下互联网上的示例并从它们开始。

我建议阅读man select_tut有很多很好的书面代码示例如何做和做什么。

关于c++ - 客户端的socket编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/580457/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com