服务器端

#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通信的更多相关文章

  1. Linux 简单socket实现TCP通信

    服务器端代码 #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <stri ...

  2. C# 通过socket实现UDP 通信

    UDP不属于面向连接的通信,在选择使用协议的时候,选择UDP必须要谨慎.在网络质量令人十分不满意的环境下,UDP协议数据包丢失会比较严重.但是由于UDP的特性:它不属于连接型协议,因而具有资源消耗小, ...

  3. Linux C socket 基于 UDP

    /*************************************************************************     > File Name: serve ...

  4. [C++] socket - 2 [UDP通信C/S实例]

    服务端: #include<iostream> #include<winsock2.h> #include<stdio.h> #pragma comment(lib ...

  5. linux下socket编程-UDP

    下面是UDP的服务器的代码: /* server.c */ #include <stdio.h> #include <string.h> #include <netine ...

  6. Linux ---> 简单socket

    #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> ...

  7. C#的Socket实现UDP协议通信

    今天稍花化了一点时间,利用C#的Socket验证了UDP的通信,为接下来特地利用UDP做个分布式的通信仿真系统打下基础.众所周知,UDP 就是用户数据报协议,在互联网参考模型的第四层——传输层.与TC ...

  8. Python的网络编程[0] -> socket[2] -> 利用 socket 建立 TCP/UDP 通信

    Socket 目录 socket 的 TCP/IP 通信基本建立过程 socket 的 UDP 通信基本建立过程 socket 的 UDP 广播式通信基本建立过程 socket 的多线程通信建立过程 ...

  9. ACE_linux:UDP通信

    1.涉及类 ACE_INET_Addr//ACE网络地址ACE_SOCK_Dgram//ACE报文 2.简介 UDP通信时无需像TCP那样建立连接和关闭连接,TCP编程时需要通过accept和conn ...

随机推荐

  1. 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 ...

  2. HDU1159(LCS)

    #include<iostream> #include<algorithm> #include<cstring> #include<cstdio> us ...

  3. ABAP术语-Data Browser

    Data Browser 原文:http://www.cnblogs.com/qiangsheng/archive/2008/01/21/1046858.html Tool for displayin ...

  4. PHP导出数据到表格的实例

    我发现最近的项目需要导出Excel表的页面非常的多,想来这个也是我们常用的功能了,现在我可以很熟练的导出了,但是记得当时自己第一次导出时还是绕了一些弯路的,那么现在我就来记录下我这次用exshop框架 ...

  5. JDBC与Statement和PreparedStatement的区别

    一.先来说说,什么是java中的Statement:Statement是java执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.具体步骤: 1.首先导入 ...

  6. java对接微信支付

    对接微信扫码支付(模式2),前端使用velocity技术 (1)调用微信支付接口(view层)  此部分业务逻辑部分可以省略 @RequestMapping("/wxpay.htm" ...

  7. 数据分析处理库Pandas——索引进阶

    Series结构 筛选数据 指定值 备注:查找出指定数值的索引和数值. 逻辑运算 备注:查找出值大于2的数据. 复合索引 DataFrame结构 显示指定列 筛选显示 备注:值小于0的显示原值,否则显 ...

  8. python 用装饰器写登录

    # 1.编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件), # 要求登录成功一次,后续的函数都无需再输入用户名和密码 # FLAG = False # def login(func): ...

  9. Flask初见

    Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSIG工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 .Flask使用 BSD 授权. Flask也被称为 “m ...

  10. Leecode刷题之旅-C语言/python-88合并两个有序数组

    /* * @lc app=leetcode.cn id=88 lang=c * * [88] 合并两个有序数组 * * https://leetcode-cn.com/problems/merge-s ...