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 ...
随机推荐
- NEC 框架规范 css reset
/* reset */html,body,h1,h2,h3,h4,h5,h6,div,dl,dt,dd,ul,ol,li,p,blockquote,pre,hr,figure,table,captio ...
- HDU1159(LCS)
#include<iostream> #include<algorithm> #include<cstring> #include<cstdio> us ...
- ABAP术语-Data Browser
Data Browser 原文:http://www.cnblogs.com/qiangsheng/archive/2008/01/21/1046858.html Tool for displayin ...
- PHP导出数据到表格的实例
我发现最近的项目需要导出Excel表的页面非常的多,想来这个也是我们常用的功能了,现在我可以很熟练的导出了,但是记得当时自己第一次导出时还是绕了一些弯路的,那么现在我就来记录下我这次用exshop框架 ...
- JDBC与Statement和PreparedStatement的区别
一.先来说说,什么是java中的Statement:Statement是java执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.具体步骤: 1.首先导入 ...
- java对接微信支付
对接微信扫码支付(模式2),前端使用velocity技术 (1)调用微信支付接口(view层) 此部分业务逻辑部分可以省略 @RequestMapping("/wxpay.htm" ...
- 数据分析处理库Pandas——索引进阶
Series结构 筛选数据 指定值 备注:查找出指定数值的索引和数值. 逻辑运算 备注:查找出值大于2的数据. 复合索引 DataFrame结构 显示指定列 筛选显示 备注:值小于0的显示原值,否则显 ...
- python 用装饰器写登录
# 1.编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件), # 要求登录成功一次,后续的函数都无需再输入用户名和密码 # FLAG = False # def login(func): ...
- Flask初见
Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSIG工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 .Flask使用 BSD 授权. Flask也被称为 “m ...
- Leecode刷题之旅-C语言/python-88合并两个有序数组
/* * @lc app=leetcode.cn id=88 lang=c * * [88] 合并两个有序数组 * * https://leetcode-cn.com/problems/merge-s ...