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 ...
随机推荐
- bitset在acm中的应用
ps:最近碰到一些用bitset优化常数的题目,以前也有接触但是都没有记下来,所以来写一篇博文 记录以后碰到的类似的题目. 应用一: 优化boolean multiplication 在做dp的时候, ...
- Unity3D学习笔记——NGUI之UIButton
前言:用于接受点击,悬停,触摸等事件.UIButton还有重要的用途,就是改变控件不同状态下的颜色. 一:使用方式: 1.在UI Root中右键创建一个Sprite 2.为其添加一个碰撞组件,就添加B ...
- openwrt源码下载移植
openwrt源码下载移植 一.源码下载 1.1下载 由于本人多次尝试从SVN代码地址下载代码,出现无法访问因此这里选择从Git代码地址进行下载.在linux系统命令终端输入 git clone gi ...
- 分享一个编译期输出TODO,FIXME列表的宏
效果,双击能跳到相应位置: >------ Build started: Project: TestVS2013, Configuration: Debug Win32 ------ > ...
- [ACM] hdu 3923 Invoker (Poyla计数,高速幂运算,扩展欧几里得或费马小定理)
Invoker Problem Description On of Vance's favourite hero is Invoker, Kael. As many people knows Kael ...
- phpstorm将多个int数字拼接成字符串
场景:将程序输出的多个int数字拼成以','分隔的字符串 数据为 8680 24399 37619 45425 49635 139334 386918 429498 461616 523384 561 ...
- 定位frame中的元素
场景 处理frame需要用到2个方法,分别是switch_to_frame(name_or_id_or_frame_element)和switch_to_default_content() 如何理解这 ...
- java随手记
javaagent可以hook字节码处理 java -javaagent:jebloader.jar -jar xxx.jar 结合javassist,可以动态替换方法内容 import java.i ...
- fork小续
pid_t pid = fork(); 1.根据fork的返回值区分父子进程: fork 函数返回两次, >0 表示父进程,返回值为子进程ID; =0 表示子进程; <0 出错. 可用代码 ...
- 【BZOJ3158】千钧一发 最小割
[BZOJ3158]千钧一发 Description Input 第一行一个正整数N. 第二行共包括N个正整数,第 个正整数表示Ai. 第三行共包括N个正整数,第 个正整数表示Bi. Output 共 ...