服务器端

#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. WebGL学习笔记(2)

    根据上一篇学习笔记,理解WebGL的工作原理及基本调用代码后,可以开始研究3D顶点对象的缩放.旋转.以及对对象进行可交互(鼠标或键盘控制)的旋转或者缩放. 要理解对象的旋转/缩放需要首先学习矩阵的计算 ...

  2. setLocale的一个用处

    setLocale是C库中的一个设置地域化信息的C函数. 函数原型为: char *setlocale(int category, const char *locale) 参数解释: category ...

  3. [JSOI2008]最大数(线段树基础)

    题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值. 限制: L 不超过当前数列的长度.(L > ...

  4. C++创建一个名为Ellipse的椭圆类--练习

    题目描述: /*设计名为Ellipse的椭圆类*/ /* 其属性为外接矩形的左上角与右下角两个点的坐标,并能计算出椭圆的面积,并测试该类. */ 代码如下: #include<iostream& ...

  5. P1330 封锁阳光大学 DFS+染色

    题目链接:https://www.luogu.org/problemnew/show/P1330 这个题有意思,如果能想到染色,就会很简单,但若想不到就很麻烦 要想把一条边封锁,就必须且只能占据这条边 ...

  6. Maven 运行启动时****找不到符号*com.xxx.user.java

    Maven 运行启动时****找不到符号*com.xxx.user.java maven项目更改后没有安装 (install) 重新安装解决问题!

  7. 利用nginx使ftp可以通过http访问

    ./nginx 启动服务./nginx -s stop 关闭服务./nginx -s reload 重新加载配置文件 搭建nginx映射ftp服务:打开nginx的配置文件nginx.conf(位于n ...

  8. java简单web爬虫(网页图片)

    java简单web爬虫(网页图片)效果,执行main()方法后图片就下载道C盘的res文件夹中.没有的话创建一个文件夹代码里的常量根据自己的需求修改,代码附到下面. package com.sinit ...

  9. weui-switch开关控件,表单提交后如何取值

    最近在学习weui这个框架,做了一些小的试验,发现weui-switch控件直接提交不能获取到表单信息,在segmentfault上发现也有人提了这个问题,有人说可以设置一个隐含标签来捕获开关的状态, ...

  10. html+php上传图片文件到服务器

    html+php上传图片文件到服务器 一.html代码 <body> <form action="" method="post" enctyp ...