<p>一、解决粘包问题<br /> 1.1、tcp的特点<br /> 面向字节流特点,会造成可能数据与数据发送到一块,成为粘包,数据之间不区分</p>
讯享网
1.3、解决粘包问题
tcp 流式套接字 数据与数据之间没有边界 导致可能多次的数据粘到一起
解决:1、规定一些数据与数据之间的 间隔符 如”aa“ ”
2、可以指定要发送的数据的长度
2、加延时,让先把东西发过去,间隔一下,相当于就是跑出去了,被拉了一下,两人错开了
signal(SIGCHLD,handler);
char buf1[1024] = “3.c”;
write(fd,buf1,strlen(buf1)+1);
//sleep(1);
int file = open(buf1,O_RDONLY);
write(fd,“ ”,2);
解决办法
在网络里面有专门的读写操作
fgets()后面的参数需要一个流指针,后面是一个流指针,遇到 结束,并且将 读到
这样我们就可以将文件描述符,转换成字符流指针,通过fgets来获取这些信息,再设置一个标志符,来进行区分所发送的信息。
send()发数据 ssize_t send(int sockfd, const void *buf, size_t len, int flags);
recv() ssize_t recv(int sockfd, void *buf, size_t len, int flags);
flag是指可以指定在网络中接收的方式 前面三个参数和read参数一致
二、常用网络测试工具
ifconfig //查看主机上,网卡网络信息
ping //测试 两台主机之间是否连通
telnet //远程登录工具
ssh //硬件(开发板)
netstat //查看当前主机上,活动的网络进程的相关的状态信息
arp //(ipc找mac)
2.1、# ubuntu开启telnet服务
sudo apt-get install openbsd-inetd
sudo apt-get install telnetd
sudo /etc/init.d/openbsd-inetd restart
注意:
安装之前,确保ubuntu能上网
ping www.baidu.com
# 查看 telnet服务是否开启
sudo netstat -a | grep telnet
开启telnet结果图
2.2、ssh安装
/ssh登录 ubuntu 需要安装以下的服务
sudo apt-get install openssh-server openssh-client
2.3、 抓包安装
sudo apt install wireshark
sudo wireshark(启动)
2.4、wireshark过滤使用
过滤规则:1、根据ip地址过滤
ip.srC = x.X.X.X
ip.dst =- x.x.x.x
根据端口过滤:tcp.srcportXX;二
tcp.dstportXX;二三
udp.srcportZ-XX;
udp.dstportXX:
根据协议类型过滤:
tcp udp icmptelnet
任意组合以上条件抓包:
如果与的关系:and
ip.src == 192.168.1.100 and tcp.dstport == 9999
如果或关系:Or
ip.src == 192.168.1.100 or ip.dst == 192.168.1.102
tcp host 192.168.1.100
2.5、netstat 测试查看网络端口使用情况
//正在活动的 常看tcp的//用的最多的
netstat -anp
-a //a] ]
直接显示 ip port 的数字形式-n ll
-p //显示 进程的 程序名 和 pid
netstat-n =–>列出当前所有网络端口使用情况
-tnetstat-n =–>列出所有TCP通信的端口信息
netstat-n-U =–>列出所有UDP通信的端口信息
netstat -n -i =–>列出默认网络接口(网卡)上的通信信息
netstat -lnp | grep 8888 i===>查看指定端口上的通信详情

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/206947.html