Linux 简单socket实现UDP通信
服务器端
- #include <stdio.h>
- #include <stdlib.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <string.h>
- #include <netinet/in.h>
- #define MAXLINE 80
- #define SERV_PORT 8888
- void do_echo( int sockfd, struct sockaddr *pcliaddr, socklen_t client )
- {
- int n;
- socklen_t len;
- char mesg[];
- while ()
- {
- len = client;
- n = recvfrom( sockfd, mesg, , , pcliaddr, &len );
- sendto( sockfd, mesg, n, , pcliaddr, len );
- mesg[n] = ;
- fputs( mesg, stdout );
- }
- return;
- }
- int main( void )
- {
- int sockfd;
- struct sockaddr_in servaddr, cliaddr;
- sockfd = socket( AF_INET, SOCK_DGRAM, );
- bzero( &servaddr, sizeof(servaddr) );
- servaddr.sin_family = AF_INET;
- servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
- servaddr.sin_port = htons(SERV_PORT);
- if ( bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) == - )
- {
- perror("bind error");
- exit();
- }
- do_echo( sockfd, (struct sockaddr *)&cliaddr, sizeof(cliaddr) );
- return ;
- }
客户端
- #include <stdio.h>
- #include <stdlib.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <string.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
- #include <unistd.h>
- #define MAXLINE 80
- #define SERV_PORT 8888
- void do_cli( FILE *fp, int sockfd, struct sockaddr *pservaddr, socklen_t servlen )
- {
- int n;
- char sendline[MAXLINE], recvline[MAXLINE + ];
- if ( connect( sockfd, (struct sockaddr *)pservaddr, servlen ) == - )
- {
- perror("connect error");
- exit();
- }
- while ( fgets(sendline, MAXLINE, fp ) != NULL )
- {
- write( sockfd, sendline, strlen(sendline) );
- n = read( sockfd, recvline, MAXLINE );
- if ( n == - )
- {
- perror("read error");
- exit();
- }
- recvline[n] = ;
- fputs( recvline, stdout );
- }
- return;
- }
- int main( int argc, char **argv )
- {
- int sockfd;
- struct sockaddr_in servaddr;
- if ( argc != )
- {
- printf("usage: udpclient <IPaddress>\n");
- exit();
- }
- bzero( &servaddr, sizeof(servaddr) );
- servaddr.sin_family = AF_INET;
- servaddr.sin_port = htons(SERV_PORT);
- if ( inet_pton(AF_INET, argv[], &servaddr.sin_addr ) <= )
- {
- printf("[%s] is not a valid IPaddress\n", argv[]);
- exit();
- }
- sockfd = socket(AF_INET, SOCK_DGRAM, );
- do_cli( stdin, sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr) );
- return ;
- }
Linux 简单socket实现UDP通信的更多相关文章
- Linux 简单socket实现TCP通信
服务器端代码 #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <stri ...
- C# 通过socket实现UDP 通信
UDP不属于面向连接的通信,在选择使用协议的时候,选择UDP必须要谨慎.在网络质量令人十分不满意的环境下,UDP协议数据包丢失会比较严重.但是由于UDP的特性:它不属于连接型协议,因而具有资源消耗小, ...
- Linux C socket 基于 UDP
/************************************************************************* > File Name: serve ...
- [C++] socket - 2 [UDP通信C/S实例]
服务端: #include<iostream> #include<winsock2.h> #include<stdio.h> #pragma comment(lib ...
- linux下socket编程-UDP
下面是UDP的服务器的代码: /* server.c */ #include <stdio.h> #include <string.h> #include <netine ...
- Linux ---> 简单socket
#include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> ...
- C#的Socket实现UDP协议通信
今天稍花化了一点时间,利用C#的Socket验证了UDP的通信,为接下来特地利用UDP做个分布式的通信仿真系统打下基础.众所周知,UDP 就是用户数据报协议,在互联网参考模型的第四层——传输层.与TC ...
- Python的网络编程[0] -> socket[2] -> 利用 socket 建立 TCP/UDP 通信
Socket 目录 socket 的 TCP/IP 通信基本建立过程 socket 的 UDP 通信基本建立过程 socket 的 UDP 广播式通信基本建立过程 socket 的多线程通信建立过程 ...
- ACE_linux:UDP通信
1.涉及类 ACE_INET_Addr//ACE网络地址ACE_SOCK_Dgram//ACE报文 2.简介 UDP通信时无需像TCP那样建立连接和关闭连接,TCP编程时需要通过accept和conn ...
随机推荐
- 记录一次LOB损坏导致的EXPDP导出ORA-01555报错
同事导出数据,结果遇到如下报错: expdp user1/XXXXXXXX directory=szdata1 dumpfile=szhzinfo_20180319.dmp logfile=szhzi ...
- DB2表空间重定向恢复数据库实战
DB2的备份恢复有点坑,当源系统和目标系统的路径设置不同时,要手动进行重定向恢复,本文是我一次实战操作之后总结的过程,仅供参考. 一.发出重定向恢复命令 DB2 RESTORE DB TO " ...
- 编写可维护的JavaScript---事件处理
在JavaScript应用中事件处理是非常重要的,所有的JavaScript都是通过事件绑定到UI上的. 1. 典型用法 当事件触发的时候,事件对象event会最为回调参数传入到事件处理程序中.eve ...
- swiper不能手指滑动翻页的解决办法
/*当swiper中的slide的里面放入长度在手机上不能滑动的时候 放入这段代码就可以了*/ var startScroll, touchStart, touchCurrent; ...
- 【模板】概率dp
有n个投资事件,和一个成功概率最低接受值rate.每个投资的价值是c[i],成功概率是p[i](浮点数). 在保证成功概率≥rate的情况下,使价值最大化. #include<bits/stdc ...
- Spirng+SpringMVC+Mybatis(一)
实习之后都是在别人搭配好环境的情况下进行一些业务的编写,脑袋已经不记得如何搭建一个ssm项目的,所以周末有空补了一下. 首先新建一个test数据库,并且在里面插入三条数据.如图下 编写一个User B ...
- JavaScript鼠标事件
mousedown 鼠标被按下. mouseup 鼠标按钮被释放(抬起). click 鼠标左键(或中建)被单击. 事件触发顺序:mousedown>mouseup>click>db ...
- thinkphp模板如何转换时间格式?
<!-- 如果有日期输出,即$data.time不为空且不为0,则格式化时间戳,否则默认当前时间戳,并格式化成日期格式 --> {$data.time|default=time()|dat ...
- 解决url传递过程中加号变空格的问题
url传递过程中加号变空格 在接收url参数的过程中,会发现如果参数中存在‘+’号,接收后会变成空格. 如11+22接收后变成11 22. 要解决这个问题,需要将加号替换为%2B进行传递. 如11%2 ...
- 廖老师的Python教程——安装Python
因为Python是跨平台的,它可以运行在Windows.Mac和各种Linux/Unix系统上.在Windows上写Python程序,放到Linux上也是能够运行的. 要开始学习Python编程,首先 ...