首页 > 系统相关 >Linux下的socket通信之TCP

Linux下的socket通信之TCP

时间:2023-12-25 10:46:59浏览次数:38  
标签:addr TCP server socket connect Linux sizeof struct

一、客户端

  1、创建socket,Tcp套接字描述符

  int sockfd = socket(AF_INET, SOCK_STREAM, 0))

  2、配置服务器地址

  struct hostent *he = gethostbyname("192.168.2.2")

  3、绑定服务器地址到socket

bzero(&server, sizeof(server)); //把 socketaddr_in 对象置为空
    server.sin_family = AF_INET;  //AF_INET 是Ipv4协议
    server.sin_port = htons(PORT);  //host to net short byte order,配置服务器端口
    server.sin_addr = *((struct in_addr *)he->h_addr);  //hostent::h_addr就是hostent::h_addr_list[0]

  4、连接正在监听的PORT的服务器

  connect(sockfd, (struct sockaddr *)&server, sizeof(server))  //失败皆为 -1

2、注意事项

  1、在linux下,linux的socket的connect()和Qt中的QObject::connect()冲突,可以使用::全局作用于解决.

    eg:::connect(sockfd, (struct sockaddr *)&server, sizeof(server))

标签:addr,TCP,server,socket,connect,Linux,sizeof,struct
From: https://www.cnblogs.com/lvshen/p/17925562.html

相关文章

  • TCP 与 UDP
    TCP与UDPTCP头部目标和源端口序列号:自己的,在建立连接时由计算机生成的随机数作为其初始值,通过SYN包传给接收端主机,每发送一次数据,就「累加」一次该「数据字节数」的大小。用来解决网络包乱序问题。确认应答号:指下一次「期望」收到的对方的数据的序列号,发送端收到这个......
  • 在Linux环境下模拟实现命令解释器用c语言实现mypwd「粉丝答疑」
    Solution要在Linux环境下用C语言模拟实现一个命令解释器,包含mypwd,mymkdir,myrmdir,mycd,mylist,mycp,mydate,mycreate,mydelete,exit等基本命令,需要按照以下步骤进行:理解每个命令的功能:mypwd:显示当前工作目录。mymkdir:创建一个新目录。myrmdir:删除一个空目......
  • TCP中握手挥手流程解读
    TCP(TransmissionControlProtocol)是一种面向连接的、可靠的传输层协议,在网络通信中起着至关重要的作用。TCP连接的建立和关闭过程涉及到握手和挥手流程,本文将深入解读TCP中的握手和挥手流程,并提供详细的代码演示,以帮助读者更好地理解和应用TCP协议。1.握手流程TCP连接的建立采用......
  • /opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld: 找不到 -lz
    我用的cmake命令是:target_link_libraries(${MyProjectName}-L/usr/lib64/mysql-lmysqlclient-lpthread-lz-lm-lssl-lcrypto-ldl) 将${MyProjectName}这个目标(可执行文件或库文件)链接到以下的库文件:/usr/lib64/mysql/libmysqlclient.so/usr/lib64/libpthread.so/usr/l......
  • linux-06
    取消挂载umount/dev/sdb1或者umount/newdisk/永久挂载vim/etc/fstab /dev/sdb1/newdisk/00 磁盘情况查询df-h查询指定目录磁盘使用情况du-hac--max-depth=1/目录-h带计量单位-a含文件-c列出明细的同时,增加汇总值--max-depth=1子目录深度为1ls......
  • Qt&&C++ 实现Tcp Server
    关于Qt&C++实现Tcp服务器的一些简易使用笔记... "材料"准备#include<QTcpServer>//Server需要包含该头文件,Client则不用#include<QTcpSocket>#include<QHostAddress>服务器流程简要1.实例化一个QTcpServer对象:  QTcpServer*server=newQTcpServer(this);2......
  • LINUX修改用户密码-交互式与非交互式
     wenwenxiong于2016-06-2719:24:16发布阅读量4.9k 收藏 4点赞数分类专栏: shell shell专栏收录该内容27篇文章0订阅订阅专栏最近管理的一批机器,有个需求是要统一修改一个帐号的用户名密码,比如将qa帐号的密码改为1234,后来还为了脚本化,很方......
  • linux 命令之vi
    1开发者vi命令常见使用场景1.1linux环境下配置文件的修改2vi命令文件的打开和关闭2.1文件的打开*vi/project.log光标定位于首行首字母*vi+#/project.log:打开文件,并定位于第#行*vi+/project.log:打开文件,定位至最后一行*vi+/PATTERN/project.log:打......
  • Linux 启动MySQL 报错:Status:“Server shutdown complete“ Error:13(权限不够)
    Status:“Servershutdowncomplete”Error:13(权限不够)我在银河麒麟V10系统中安装启动MySQL出现的一个错误:“Servershutdowncomplete”Error:13(权限不够),我在其他系统中没有遇到到。问题背景在国产化系统银河麒麟V10上尝试启动MySQL服务器时,可能会收到如下错误信息:Status:"Ser......
  • Linux下,安装单机版Flink
    安装前准备jdk环境开始安装下载安装包地址1:https://archive.apache.org/dist/flink/flink-1.18.0/flink-1.18.0-bin-scala_2.12.tgz官方:https://dlcdn.apache.org/flink/flink-1.18.0/flink-1.18.0-bin-scala_2.12.tgz清华镜像:https://mirrors.tuna.tsinghua.edu.cn/apac......