// perror(\ exit(1); }
optval = 1;
//**********当一个套接字已经打开但尚未有连接的时候用setsockopt()系统调用在其上设定选项
if ( setsockopt(client_sockfd, SOL_SOCKET, SO_BROADCAST, (void *)&optval, sizeof(int)) < 0 ) {
// perror(\ exit(1); }
memset( &serv_addr, 0, sizeof(struct sockaddr_in) ); //把serv_addr的所有字节设置成字符
serv_addr.sin_family = AF_INET; //表示UNIX网络套接字
serv_addr.sin_port = htons( PORT ); //远端主机端口号 serv_addr.sin_addr.s_addr = inet_addr(\表示发送的是广播包
if ( sendto(client_sockfd, send_buf, t, 0, (struct sockaddr *)&serv_addr,
sizeof(struct sockaddr)) < 0 )//广播包每次发一个字节 {
// perror(\ exit(1); }
close( client_sockfd ); //关闭套接字 return 0; }
int main() {
pid_t pid,id; int fd;
int nread,nwrite;
int i=0,sum=0,recv_c=0;
unsigned char readbuff[100]; //定义串口在内存中接收的缓冲区
unsigned char buff[100]; //将缓冲接收的串口数据放到buff里
unsigned char check[100]; //存放udp接收的数据 char *dev = \
fd = OpenDev(dev); //打开串口
set_speed(fd,57600); //设置波特率为57600
if (set_Parity(fd,8,1,'N') == FALSE) //设置校验,数据位,停止位 {
exit (1); }
pid=fork(); //建立新的进程。以下是两个并行的进程 if(pid<0) {
exit(1); }
if(pid==0) //子进程,接收广播包,发送到串口 {
// printf( \ while(1) {
recv_c=udp_broadcast_service(check); //接收udp数据
while((nwrite=write(fd,check,recv_c))>0) //将数据通过串口发送出去
{
check[nwrite] = '\\0'; break; } } }
else //父进程,接收串口的数据,发送广播包 {
// printf( \ while(1)
{
tcflush(fd, TCIOFLUSH); //刷新串口
bzero(readbuff,100); //清空缓冲区 bzero(buff,100); while((nread = read(fd, buff,1))<=0) {
//等待子进程,如果子进程死亡,返回子进程pid,如果没死亡返回pid=0;
id=waitpid(pid,NULL,WNOHANG);
if(id==pid)//如果子进程死亡,父进程销毁 {
// printf(\ exit(1); }
usleep(1000); } sum=1; nread=0;
usleep(5000); //要让串口有足够的时间接数 // printf( \
while((nread = read(fd, readbuff,8))>0) //接收串口的数据 {
for(i=0;i buff[sum+i]=readbuff[i]; } sum=nread+sum; nread=0; bzero(readbuff,100); usleep(10000); // printf( \ } // printf( \ send_broadcast(buff,sum); //发送出去 bzero(buff,100); tcflush(fd, TCIOFLUSH); sum=0; } } close(fd); } 将串口接受的数据以udp
linux系统下,串口接收发送数据,并利用udp转发剖析



