网络编程

网络编程概念
网络编程包括地址和数据
地址:IP地址、端口号 数据:协议(格式)

1.协议TCP/UDP对比:
*
TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前,不需要建立连接。
*
TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错、不丢失、不充分且按序到达;UDP尽最大努力交付,即不保证可靠交付
*
TCP面向字节流,实际上是TCP把数据看成一串无结构的字节流;UDP是面向报文的。UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)。
*
每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信。
*
TCP首部开销20字节;UDP的首部开销小,只有8个字节。
*
TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道。

    2.端口号作用
* 

一台拥有IP地址的主机可以提供许多服务,比如web服务,FTP服务、SMTP服务等。 这些服务完全可以通过1个IP地址来实现。那么主机是怎么样区分不同的网络服务呢? 显然不能只靠IP地址,因为IP地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区分不同的服务的。端口提供了一种访问通道,服务器一般都是通过知名端口号来识别。例如,对于每个TCP/IP实现来说,FTP服务器的TCP端口号都是21,每个Telnet服务器的TCP端口号都是23,每个TFTP(简单文件传送协议)服务器的UDP端口号都是69。

    3.字节序
* 

字节序是指多字节数据在计算机内存中存储或者网络传输时各字节的存储顺序。 分为小端字节序(Little endian) 和 大端字节序(Big endian) //网络字节序 = 大端字节序

    小端字节序:将低序字节存储在起始地址。
    大端字节序:将高序字节存储在起始地址。

网络编程过程

在这里插入图片描述

    ①int socket(int domain, int type, int protocol);  //连接协议  创建套接字
    ②int bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen); //IP号端口号与相应描述字赋值函数
    ③listen()函数   //监听设置函数
    ④accept()函数//连接客户端,返回新的套接字
    ⑤数据收发 //read 、 write  等等

客户端代码:

#include <stdio.h>
#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>
//#include <linux/in.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
char buf1[128]= {0};
char buf[1024] = {0};
int sockfd;
// 1.socket
sockfd = socket(AF_INET, SOCK_STREAM, 0);

struct sockaddr_in ct_connect;

ct_connect.sin_family = AF_INET;
ct_connect.sin_port = htons(atoi(argv[2]));
inet_aton(argv[1], &ct_connect.sin_addr);

int n_connect;
n_connect = connect(sockfd, (struct sockaddr *)&ct_connect,
                    sizeof(struct sockaddr_in));
if (n_connect == 0) {
    printf("connect success!\n");
}
int n_fork = fork();
if(n_fork == 0){
    while(1){
    printf("请输入消息:\n");
    scanf("%s", buf);
    write(sockfd, buf, 128);
    memset(buf,0,sizeof(buf));
    if ((write(sockfd, buf, 128)) == -1) {
        perror("write");
        exit(-1);
    }
    }
}
while(1){
    read(sockfd,buf1,128);
    printf("读取内容:%s\n",buf1);
    memset(buf1,0,sizeof(buf1));
}

return 0;

}

服务端代码:

#include <stdio.h>
#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>
//#include <linux/in.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char **argv) {

int sockfd;
// 1.socket
sockfd = socket(AF_INET, SOCK_STREAM, 0);
// 2.bind
struct sockaddr_in skaddr;
struct sockaddr_in ac_addr;
memset(&skaddr, 0, sizeof(struct sockaddr_in));
memset(&ac_addr, 0, sizeof(struct sockaddr_in));

skaddr.sin_family = AF_INET;
skaddr.sin_port = htons(atoi(argv[2]));
inet_aton(argv[1], &skaddr.sin_addr);

int n_bind;
n_bind =
    bind(sockfd, (struct sockaddr *)&skaddr, sizeof(struct sockaddr_in));
if (n_bind == -1) {
    perror("bind");
    exit(-1);
}

// 3.listen
int n_listen;
n_listen = listen(sockfd, 10);
printf("n_listen=%d\n", n_listen);

// 4.accept

int c_fd;
int len = sizeof(struct sockaddr_in);
char buf[128] = {0};
char buf1[128] = {0};
int n_read;

c_fd = accept(sockfd, (struct sockaddr *)&ac_addr, &len);
printf("connect success:%s\n", inet_ntoa(ac_addr.sin_addr));

int n_fork = fork();
if (n_fork == 0) {
    while (1) {
        memset(buf, 0, sizeof(buf));
        n_read = read(c_fd, buf, 128);
            printf("获取内容:%s\n", buf);
    }
}
while (1) {
    gets(buf1);
    write(c_fd, buf1, 128);

    memset(buf1, 0, sizeof(buf1));
}
return 0;

}

以下是对提供的参考资料的总结,按照要求结构化多个要点分条输出: 4G/5G无线网络优化与网规案例分析: NSA站点下终端掉4G问题:部分用户反馈NSA终端频繁掉4G,主要因终端主动发起SCGfail导致。分析显示,在信号较好的环境下,终端可能因节能、过热保护等原因主动释放连接。解决方案建议终端侧进行分析处理,尝试关闭节电开关等。 RSSI算法识别天馈遮挡:通过计算RSSI平均值及差值识别天馈遮挡,差值大于3dB则认定有遮挡。不同设备分组规则不同,如64T和32T。此方法可有效帮助现场人员识别因环境变化引起的网络问题。 5G 160M组网小区CA不生效:某5G站点开启100M+60M CA功能后,测试发现UE无法正常使用CA功能。问题原因在于CA频点集标识配置错误,修正后测试正常。 5G网络优化与策略: CCE映射方式优化:针对诺基亚站点覆盖农村区域,通过优化CCE资源映射方式(交织、非交织),提升RRC连接建立成功率和无线接通率。非交织方式相比交织方式有显著提升。 5G AAU两扇区组网:与三扇区组网相比,AAU两扇区组网在RSRP、SINR、下载速率和上传速率上表现不同,需根据具体场景选择适合的组网方式。 5G语音解决方案:包括沿用4G语音解决方案、EPS Fallback方案和VoNR方案。不同方案适用于不同的5G组网策略,如NSA和SA,并影响语音连续性和网络覆盖。 4G网络优化与资源利用: 4G室分设备利旧:面对4G网络投资压减与资源需求矛盾,提出利旧多维度调优策略,包括资源整合、统筹调配既有资源,以满足新增需求和提质增效。 宏站RRU设备1托N射灯:针对5G深度覆盖需求,研究使用宏站AAU结合1托N射灯方案,快速便捷地开通5G站点,提升深度覆盖能力。 基站与流程管理: 爱立信LTE基站邻区添加流程:未提供具体内容,但通常涉及邻区规划、参数配置、测试验证等步骤,以确保基站间顺畅切换和覆盖连续性。 网络规划与策略: 新高铁跨海大桥覆盖方案试点:虽未提供详细内容,但可推测涉及高铁跨海大桥区域的4G/5G网络覆盖规划,需考虑信号穿透、移动性管理、网络容量等因素。 总结: 提供的参考资料涵盖了4G/5G无线网络优化、网规案例分析、网络优化策略、资源利用、基站管理等多个方面。 通过具体案例分析,展示了无线网络优化中的常见问题及解决方案,如NSA终端掉4G、RSSI识别天馈遮挡、CA不生效等。 强调了5G网络优化与策略的重要性,包括CCE映射方式优化、5G语音解决方案、AAU扇区组网选择等。 提出了4G网络优化与资源利用的策略,如室分设备利旧、宏站RRU设备1托N射灯等。 基站与流程管理方面,提到了爱立信LTE基站邻区添加流程,但未给出具体细节。 新高铁跨海大桥覆盖方案试点展示了特殊场景下的网络规划需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值