data.h

 #ifndef DATA_H
#define DATA_H
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <stdlib.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <errno.h>
#define PORT 4578
#define maxn 100 #endif

server.c

 #include "data.h"
int main()
{
int sockfd;
struct sockaddr_in server;
struct sockaddr_in client;
socklen_t len;
int num;
char buf[maxn];
if((sockfd = socket(AF_INET,SOCK_DGRAM,)) == -)
{
fprintf(stderr,"socket fail,error:%s\n",strerror(errno));
return -;
}
bzero(&server,sizeof(server));
server.sin_family = AF_INET;
server.sin_port = htons(PORT);
server.sin_addr.s_addr = htonl(INADDR_ANY);
if(bind(sockfd,(struct sockaddr*)&server,sizeof(server)) == -)
{
fprintf(stderr,"bind fail,error:%s\n",strerror(errno));
return -;
}
len = sizeof(client);
bzero(&buf,sizeof(buf));
while()
{
num = recvfrom(sockfd,buf,maxn,,(struct sockaddr*)&client,&len);
if(num < )
{
perror("recvfrom() error!\n");
exit();
}
num--;
buf[num] = '\0';
printf("You got a message <%s> from client.\n",buf);
printf("It is ip is %s,port is %d.\n",
inet_ntoa(client.sin_addr), htons(client.sin_port));
sendto(sockfd,buf,strlen(buf),,(struct sockaddr*)&client,len);
if(!strcmp(buf,"bye"))
break;
}
close(sockfd); }

client.c

#include "data.h"
int main()
{
int sockfd,num;
char sendbuf[maxn];
char recvbuf[maxn];
struct sockaddr_in server;
struct sockaddr_in peer;
if((sockfd = socket(AF_INET,SOCK_DGRAM,)) == -)
{
fprintf(stderr,"socket fail,error %s\n",strerror(errno));
exit();
}
bzero(&server,sizeof(server));
server.sin_family = AF_INET;
server.sin_port = htons(PORT);
server.sin_addr.s_addr = inet_addr("127.0.0.1");
bzero(&sendbuf,sizeof(sendbuf));
bzero(&recvbuf,sizeof(recvbuf));
while(fgets(sendbuf,sizeof(sendbuf),stdin) != NULL)
{
int tt = strlen(sendbuf);
sendto(sockfd,sendbuf,tt,,(struct sockaddr*)&server,sizeof(server));
socklen_t len;
recvfrom(sockfd,recvbuf,maxn,,NULL,NULL);
printf("receive message is :");
fputs(recvbuf,stdout);
printf("\n");
bzero(&sendbuf,sizeof(sendbuf));
bzero(&recvbuf,sizeof(recvbuf));
}
close(sockfd);
return ;
}

运行结果:

基于UDP套接字编程实例的更多相关文章

  1. 探索UDP套接字编程

    UDP和TCP处于同一层网络模型中,也就是运输层,基于二者之上的应用有很多,常见的基于TCP的有HTTP.Telnet等,基于UDP有DNS.NFS.SNMP等.UDP是无连接,不可靠的数据协议服务, ...

  2. 【转】 探索UDP套接字编程

    UDP和TCP处于同一层网络模型中,也就是运输层,基于二者之上的应用有很多,常见的基于TCP的有HTTP.Telnet等,基于UDP有DNS.NFS.SNMP等.UDP是无连接,不可靠的数据协议服务, ...

  3. 【Python网络编程】利用Python进行TCP、UDP套接字编程

    之前实现了Java版本的TCP和UDP套接字编程的例子,于是决定结合Python的学习做一个Python版本的套接字编程实验. 流程如下: 1.一台客户机从其标准输入(键盘)读入一行字符,并通过其套接 ...

  4. JavaTCP和UDP套接字编程

    在我们刚开始入门Java后端的时候可能你会觉得有点复杂,包含了很多杂七杂八的知识,例如文件上传下载,监听器,JDBC,请求重定向,请求转发等等(当然也没有很多),但是我们自己真正的去开发一个小型网站( ...

  5. 计算机网络实验 UDP套接字编程

    这是个傻瓜式操作教程 西科大计算机网络实验 UDP套接字编程 我用自己的Ubuntu16.04来举例,实验室的是虚拟机,差不多 只针对第三个题目,修改服务器来通过响应客户端发送的GetTime并发送给 ...

  6. UDP套接字编程 返回系统时间

    计算机网络实验 简单UDP套接字编程 这是学校老师自己改进了一点的题目.我预习了好久才搞明白,同学来问的时候,一大堆简单问题实在是不想回答...所以,这时候我觉得博客是个好东西! 我的任务是做客户端和 ...

  7. 【Unix网络编程】chapter8基本UDP套接字编程

    chapter8基本UDP套接字编程 8.1 概述 典型的UDP客户端/服务端的函数调用 8.2 recvfrom和sendto函数 #include <sys/socket.h> ssi ...

  8. TCP和UDP套接字编程 (java实现)

    在了解网络编程之前,我们先了解一下什么叫套接字 套接字即指同一台主机内应用层和运输层之间的接口 由于这个套接字是建立在网络上建立网络应用的可编程接口 因此也将套接字称为应用程序和网络之间的应用程序编程 ...

  9. 《Unix 网络编程》08:基本UDP套接字编程

    基本UDP套接字编程 系列文章导航:<Unix 网络编程>笔记 UDP 概述 流程图 recvfrom 和 sendto #include <sys/socket.h> ssi ...

随机推荐

  1. HDOJ.1075 What Are You Talking About(map)

    What Are You Talking About 点我跳转到题面 点我一起学习STL-MAP 题意分析 首先第一组START-END给出翻译的字典,第二组START-END给出一句话,查找里面出现 ...

  2. git生成ssh key和多账号支持

    git配置ssh 1.首先设置git的全局user name和email $ git config --global user.name "ygtzz"$ git config - ...

  3. python----测试04.18

    # py4测试题 # 1.8 << 2 # 等于? 8转化成二进制:1000 向左移动2位: 0010 0000 转化成十进制:32 # 2.通过内置函数计算5除以2的余数 print(d ...

  4. 第三方库安装——requests

    环境 操作系统:CentOS 6.7 32-bit Python:2.6.6 安装 pip install requests

  5. ACM3018欧拉回路

    欧拉回路 欧拉回路:图G,若存在一条路,经过G中每条边有且仅有一次,称这条路为欧拉路,如果存在一条回路经过G每条边有且仅有一次, 称这条回路为欧拉回路.具有欧拉回路的图成为欧拉图. 判断欧拉路是否存在 ...

  6. POJ 2429 long long 质因数分解

    GCD & LCM Inverse Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 16206   Accepted: ...

  7. rwx

    常用的linux文件权限:444 r--r--r--600 rw-------644 rw-r--r--666 rw-rw-rw-700 rwx------744 rwxr--r--755 rwxr- ...

  8. [freemarker篇]01.入门Freemarker示例

    这今天“弄”军哥的管理系统,里面由涉及到一部分的FreeMarker的知识,并且我那些学生在亚信实习也涉及到这部分的知识,所以想开始总结一些FreeMarker,正好我可开始使用一下Maven,简单的 ...

  9. css常见水平居中

    行内元素居中 常见行内元素如文本,图片等居中时,通常是给父元素设置text-align:center 来实现.例如 HTML: <body> <div>我是文字,我要居中显示& ...

  10. 数学:Burnside引理与Pólya定理

    这个计数定理在考虑对称的计数中非常有用 先给出这个定理的描述,虽然看不太懂: 在一个置换群G={a1,a2,a3……ak}中,把每个置换都写成不相交循环的乘积. 设C1(ak)是在置换ak的作用下不动 ...