『壹』 C/C++做服务器需要学习什么样的技术
做服务器,你需要知道服务器都需要什么技术。首先,搭建服务器一般都是在linux平台,所以你需要了解Linux知识,包括Linux操码顷陪作迟蠢命令。
另外,服务器经常需要脚本,你需要知道shell脚本的知识。
然后,就是网络通信,服务器和客户端需要进行通信,你需要知道tcp/ip协议,网络编程,http和https协议,还有单播,组播,广播。
还有,服务器一般还需要数据库做支撑,所以数据库还需要了解。
当然,最基础的编程语言肯定是需要熟练掌握的,最好能懂算法,这样搭建服务器才高效。
最后,还乎猜有一些特殊的技术,比如多客户端同时连接服务器问题,epoll,select技术,进程间通信技术,多线程技术,文件操作等。
当然,以上所有技术了解最好,有些是必须熟练使用的。但是有些不用熟练使用,因为服务器,也不会让你全干,分到每个人手上的活只是一部分。
『贰』 linux下的UDP通讯怎么接受不到广播
说明:把广播地址改为服务器地址时接收正常 ?
如果接收正常就OK了?你发送到广播地址,接收到的是服务器发出的.
发送 -> to 255.255.255.255
接受 -> bind 0.0.0.0 -> from server_addr
要不然就是你没有说清楚
---------------------------
你希望服务器收到自己的广播?那个不是保证可以正确的。不一定会收到几个,也可能没有。
『叁』 关于linux下udp广播包
你确认你的广播包在eth0和wlan0上都发出了吗?我估计只在eth0上发了。
教你一个办法确认,在linux上使用tcpmp 抓包:
tcpmp -i eth0
tcpmp -i wlan0
『肆』 如果想学Linux,应该怎么学
对于Linux的学习,可以分为四个阶段,Linux初级入门阶段→Linux中级进阶→高级进阶→Linux资深方向细化阶段
第一阶段:初级阶段
初级阶段需要把linux学习路线搞清楚,任何学习都是循序渐进的,所以学linux也是需要有一定的路线。
1. Linux基础知识、基本命令;
2. Linux用户及权限基础;
3. Linux系统进程管理进阶;
4. linux高效文本、文件处理命令;
5. shell脚本入门
第二阶段:中级进阶
中级进阶需要在充分了解linux原理和基础知识之后,对上层的应用和服务进行深入学习,其中说到服务肯定涉及到网络的相关知识,是需要花时间学习的。
1. TCP/IP网络基础;
2. Linux企业常用服务;
3. Linux企业级安全原理和防范技巧;
4. 加密/解密原理及数据安全、系统服务访问控制及服务安全基础;
5. iptables安全策略构建;
6. shell脚本进阶;
7. MySQL应用原理及管理入门
第三阶段:Linux高级进阶
1. http服务代理缓存加速;
2. 企业级负载集群;
3. 企业级高可用集群;
4. 运维监控zabbix详解;
5. 运维自动化学习;
第四阶段:Linux资深方向细化
1. 大数据方向;
2. 云计算方向;
3. 运维开发;
4. 自动化运维;
5. 运维架构师
『伍』 linux socket编程之udp广播 假设,两台pc网线直连,a电脑ip设置为192.168.
不可以,必须是同一个网段,然后广播地址可以是192.168.1.255或者255.255.255.255
『陆』 求用udp发广播消息的C代码。
//发送端程序
#include <stdio.h>
#include <winsock.h>
int main(int argc, char* argv[])
{
WSADATA wsaData; //指向WinSocket信息结构的指针
SOCKET sockListener;
SOCKADDR_IN sin,saUdpServ;
BOOL fBroadcast = TRUE;
char sendBuff[1024];
int nSize;
int ncount=0;
if(WSAStartup(MAKEWORD( 1, 1 ), &wsaData )!=0)//进行WinSocket的初始化
{
printf("Can't initiates windows socket!Program stop.\n");//初始化失败返回-1
return -1;
}
sockListener=socket(PF_INET,SOCK_DGRAM,0);
setsockopt ( sockListener,SOL_SOCKET,SO_BROADCAST,
(CHAR *)&fBroadcast,sizeof ( BOOL ));
sin.sin_family = AF_INET;
sin.sin_port = htons(0);
sin.sin_addr.s_addr = htonl(INADDR_ANY);
if(bind( sockListener, (SOCKADDR *)&sin, sizeof(sin))!=0)
{
printf("Can't bind socket to local port!Program stop.\n");//初始化失败返回-1
return -1;
}
saUdpServ.sin_family = AF_INET;
saUdpServ.sin_addr.s_addr = htonl ( INADDR_BROADCAST );
saUdpServ.sin_port = htons (7001);//发送用的端口,可以根据需要更改
nSize = sizeof ( SOCKADDR_IN );
while(1)
{
sprintf(sendBuff,"Message %d",ncount++);
sendto ( sockListener,sendBuff,
lstrlen (sendBuff),
0,
(SOCKADDR *) &saUdpServ,
sizeof ( SOCKADDR_IN ));
printf("%s\n",sendBuff);
}
return 0;
}
/////////////////////
//接收
#include <stdio.h>
#include <winsock.h>
#include <conio.h>
int main(int argc, char* argv[])
{
WSADATA wsaData; //指向WinSocket信息结构的指针
SOCKET sockListener;
SOCKADDR_IN sin,saClient;
char cRecvBuff[1024];
int nSize,nbSize;
int iAddrLen=sizeof(saClient);
if(WSAStartup(MAKEWORD( 1, 1 ), &wsaData )!=0)//进行WinSocket的初始化
{
printf("Can't initiates windows socket!Program stop.\n");//初始化失败返回-1
return -1;
}
sockListener=socket(AF_INET, SOCK_DGRAM,0);
sin.sin_family = AF_INET;
sin.sin_port = htons(7001);//发送端使用的发送端口,可以根据需要更改
sin.sin_addr.s_addr = htonl(INADDR_ANY);
if(bind( sockListener, (SOCKADDR FAR *)&sin, sizeof(sin))!=0)
{
printf("Can't bind socket to local port!Program stop.\n");//初始化失败返回-1
return -1;
}
while(1)
{
nSize = sizeof ( SOCKADDR_IN );
if((nbSize=recvfrom (sockListener,cRecvBuff,1024,0,
(SOCKADDR FAR *) &saClient,&nSize))==SOCKET_ERROR)
{
printf("Recive Error");
break;
}
cRecvBuff[nbSize] = '\0';
printf("%s\n",cRecvBuff);
}
return 0;
}
『柒』 单片机如何实现UDP广播发送
没弄过,udp广播只在linux里面用socket实现过。只能给你个思路:
首先实现网络接口的数据收发,然后在此基础上实现IP协议,在IP协议基础上研究udp广播的发送方式,然后实现udp广播收发就算可以了。
由于udp广播发送是单工通信,像tcp得三次握手啊之类的都不需要,所以实现起来还是较简单的。