linux+udp+server+client
一、客户端
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
#include<stdio.h>
#include<errno.h>
#include<time.h>
#include<string.h>
void main()
{
char send_data[20]="im sender data";
int fd;
struct sockaddr_in local_addr,to_addr;
fd=socket(AF_INET,SCOK_DGRAM,0);
if(fd<0)
{
printf("create socket error");
return;
}
local_addr.sin_family=AF_INET;
local_addr.sin_port=htons(7777);
local_addr.sin_addr.s_addr=INADDR_ANY;
to_addr.sin_family=AF_INET;
to_addr.sin_port=htons(8888);
to_addr.sin_addr.s_addr=INADDR_ANY;
if(-1 == bind(fd,(struct sockaddr*)&local_addr,sizeof(local_addr)))
{
printf("bind error\n);
close(fd);
return;
}
printf("bind success");
while(1)
{
sleep(1);
if(-1 != sendto(fd,send_data,sizeof(send_data),0,(struct sockaddr*)&to_addr,sizeof(to_addr)))
printf("send success\n");
else
printf("send error\n");
}
}
二、服务器
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
#include<stdio.h>
#include<errno.h>
#include<time.h>
#include<string.h>
void main()
{
int fd;
int n;
char rcv_buf[256];
socklen_t servlen;
struct sockaddr_in from_addr,temp_addr;
fd=socket(AS_INET,SOCK_DGRAM,0);
if(fd<0)
{
printf("create socket error");
return;
}
from_addr.sin_family=AF_INET;
from_addr.sin_port=htons(8888);
from_addr.sin_addr.s_addr=INADDR_ANY;
servlen=sizeof(tem_addr);
if(-1 == bind(fd,(struck sockaddr*)&from_addr,sizeof(struck sockaddr_in)))
{
printf("bind error");
return;
}
while(1)
{
bzero(rcv_buf,256);
n=rcvfrom(fd,rcv_buf,256,0,(struct sockaddr*)&temp_addr,&servlen);
rcv_buf[n]=0;
printf("rcvdata:%s\n",rcv_buf);
}
}
ps:
1、unsigned short int htons(unsigned short int hostshort);将参数指定的16位hostshort转换成网络字符顺序。
2、int inet_aton(const char * cp,struct in_addr *inp);将参数cp所指的网络地址字符串转换成网络使用的二进制的数字, 然后存于参数inp所指的in_addr结构中。
linux+udp+server+client的更多相关文章
- 使用epoll实现一个udp server && client
udp server #!/usr/bin/env python #-*- coding:utf-8 -*- import socket import select import Queue #创建s ...
- UDP server & client
Server: import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; ...
- UDP client,UDP server, TCP server, TCP client
UDP server import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocke ...
- uip UDP server广播模式(client能够随意port,而且主动向client发送数据)
眼下移植uip,发现UDP server模式下,必须指定本地port以及clientport,否则仅仅能讲clientport设置为0,才干接收随意port的数据,可是无法发送数据,由于此时clien ...
- TCP/UDP Socket调试工具提供了TCP Server,TCP Client,UDP Server,UDP Client,UDP Group 五种Socket调试方案。
一.TCP通信测试: 1) 创建TCP Server: 选中左方的TCP Server, 然后点击”创建”按钮,软件弹出监听端口输入框 输入监听端口后,即创建了一个在指定端口上进行监听的TCP S ...
- linux c server and client 简单的通信
server.c #include <stdlib.h> #include <stdio.h> #include <errno.h> #include <st ...
- TCP/UDP server
Simple: Sample TCP/UDP server https://msdn.microsoft.com/en-us/library/aa231754(v=vs.60).aspx Simple ...
- epoll简介 与 UDP server的实现
Abstractepoll是Linux内核为处理大批量句柄而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著减少程序在大量并发连接中只有少量活跃的情况下的系 ...
- LVS : Linux Virtual Server 负载均衡,集群,高并发,robust
1 LVS : Linux Virtual Server http://www.linuxvirtualserver.org/ http://www.linuxvirtualserver.org/zh ...
随机推荐
- 一个改动配置文件的linux shell script
不久以前,以前搜到一篇博客是读取配置文件的,http://www.cnblogs.com/bo083/archive/2012/11/19/2777076.html,用到如今,感觉十分方便.感谢作者. ...
- SVN服务器迁移,SVN版本库迁移(网络copy)
做法: 准备:系统平台:windows server 2003 版本库:vos 源服务器:10.10.13.48 目标服务器:10.10.13.129源SVN版本库的path: D:\svn\vos要 ...
- day14 生成器的进阶
一.生成器的两种形式 1.生成器函数的应用 # def cloth(): # for i in range(100): # yield '衣服%s'%i # # g = cloth() # for ...
- GUN C中的流
当我们要对文件(在Linux环境中一切皆文件,包括硬件设备.资源等)进行操作(读.写.读写)时,必须连接文件或形成通信管道.这个过程称为打开文件.打开文件后可以进行读.写.读写操作. 打开的文件可以称 ...
- IOS 关于取消延迟执行函数的种种。performSelector与cancelPreviousPerformRequestsWithTarget
本文非本人撰写 @interface NSObject (NSDelayedPerforming) - (void)performSelector:(SEL)aSelector withObj ...
- css单行排版
text-overflow: ellipsis; overflow: hidden; white-space: nowrap;
- 关东升的《iOS实战:图形图像、动画和多媒体卷(Swift版)》上市了
关东升的<iOS实战:图形图像.动画和多媒体卷(Swift版)>上市了 承蒙广大读者的厚爱我的<iOS实战:图形图像.动画和多媒体卷(Swift版)>京东上市了,欢迎广大读者提 ...
- easy 正则表达式验证 封装
基于EasyUI ValidateBox 的表单验证,可以直接写正则表达式. 在页面加载时执行下面代码 if ($.fn.form) { $.extend($.fn.validatebox.defau ...
- ID生成策略
在电商项目中,图片名.商品ID都要唯一且方便存储,于是记录下这两个ID生成策略的方法,以便日后项目再有需要.具体代码如下 import java.util.Random; /** * 图片名生成 */ ...
- Nginx 解决WebSocket TCP 转发问题
背景: IM 即时通讯时候 , 前期我用的是IP 没什么问题,当然上线肯定要搞个域名搞搞了! 那么问题来了------>Nginx 我按照原先那样配置时候不行了, 连接不了. 解决方法: ...