创建基本的CC++ TCP套接字编写器

创建基本的CC++ TCP套接字编写器,第1张

概述以下是我提出的以下基本socket代码: //General includes:#include <iostream>#include <stdio.h>#include <string>//Network related includes:#include <sys/socket.h>#include <netdb.h>#include <arpa/inet.h>//Targ 以下是我提出的以下基本socket代码:
//General includes:#include <iostream>#include <stdio.h>#include <string>//Network related includes:#include <sys/socket.h>#include <netdb.h>#include <arpa/inet.h>//Target host details:#define PORT 1234#define HOST "74.74.74.74"using namespace std;//Function prototypes:string messageformat(int,char**);voID MessageSend(string);int main(int argc,char *argv[]){    //Parse arguments and format message:    string message = messageformat(argc,argv);    //Send the message out:     MessageSend(message);    return 0;}string messageformat(int argc,char *argv[]){    //Massage the command line parameters    // into my desired payload format.    return message;}voID MessageSend(string message){    int sd,ret;    struct sockaddr_in server;    struct in_addr ipv4addr;    struct hostent *hp;    sd = socket(AF_INET,SOCK_DGRAM,0);    server.sin_family = AF_INET;    inet_pton(AF_INET,HOST,&ipv4addr);    hp = gethostbyaddr(&ipv4addr,sizeof ipv4addr,AF_INET);    //hp = gethostbyname(HOST);    bcopy(hp->h_addr,&(server.sin_addr.s_addr),hp->h_length);    server.sin_port = htons(PORT);    connect(sd,(const sockaddr *)&server,sizeof(server));    send(sd,(char *)message.c_str(),strlen((char *)message.c_str()),0);}

这是相当基本的,事实上工作.然而,它发送UDP数据包而不是TCP数据包,因此目标主机期望TCP拒绝这些.另外,通过检查连接/发送值并使用ngrep观察我的接口,我可以100%验证数据包是否正在出来,这不是问题.

我只想修改我所拥有的,而不是用boost asio创建一个功能齐全的服务器.我如何调整这一点,使其以TCP而不是UDP的方式运行?

解决方法 以下是通过TCP传输数据所需的更改

>同时创建套接字传递正确的参数.在上面的例子中,你传递SOCK_DGRAM而不是传递SOCK_STREAM.
>绑定后的服务器应该进入监听模式(检查手册页面的Listen)
而客户端应在套接字创建后连接.
>然后在服务器端接受后听.
>最终读取和写入传输数据

附图将给您一个清晰的TCP连接画面

您可以查看手册页,了解所有功能的详细信息,或参考beej的插座编程指南(使用this链接)

总结

以上是内存溢出为你收集整理的创建基本的C/C++ TCP套接字编写器全部内容,希望文章能够帮你解决创建基本的C/C++ TCP套接字编写器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1252077.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存