一、客户端

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

  1. 使用epoll实现一个udp server && client

    udp server #!/usr/bin/env python #-*- coding:utf-8 -*- import socket import select import Queue #创建s ...

  2. UDP server & client

    Server: import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; ...

  3. UDP client,UDP server, TCP server, TCP client

    UDP server import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocke ...

  4. uip UDP server广播模式(client能够随意port,而且主动向client发送数据)

    眼下移植uip,发现UDP server模式下,必须指定本地port以及clientport,否则仅仅能讲clientport设置为0,才干接收随意port的数据,可是无法发送数据,由于此时clien ...

  5. TCP/UDP Socket调试工具提供了TCP Server,TCP Client,UDP Server,UDP Client,UDP Group 五种Socket调试方案。

    一.TCP通信测试: 1)   创建TCP Server: 选中左方的TCP Server, 然后点击”创建”按钮,软件弹出监听端口输入框 输入监听端口后,即创建了一个在指定端口上进行监听的TCP S ...

  6. linux c server and client 简单的通信

    server.c #include <stdlib.h> #include <stdio.h> #include <errno.h> #include <st ...

  7. TCP/UDP server

    Simple: Sample TCP/UDP server https://msdn.microsoft.com/en-us/library/aa231754(v=vs.60).aspx Simple ...

  8. epoll简介 与 UDP server的实现

    Abstractepoll是Linux内核为处理大批量句柄而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著减少程序在大量并发连接中只有少量活跃的情况下的系 ...

  9. LVS : Linux Virtual Server 负载均衡,集群,高并发,robust

    1 LVS : Linux Virtual Server http://www.linuxvirtualserver.org/ http://www.linuxvirtualserver.org/zh ...

随机推荐

  1. 009android初级篇之APP中使用系统相机相册等集成应用

    android应用中使用相机功能,大致有两种方式实现: 直接调用系统内部的相机程序,显示的也是系统预设的界面(简单,只有简单的拍照功能): 自己去implement一个相机程序(不难,较具备弹性,但相 ...

  2. sqoop 从oracle导数据到hive中,date型数据时分秒截断问题

    oracle数据库中Date类型倒入到hive中出现时分秒截断问题解决方案 1.问题描述: 用sqoop将oracle数据表倒入到hive中,oracle中Date型数据会出现时分秒截断问题,只保留了 ...

  3. Unity3D学习笔记——UIScrollBar和UIScrollView使用

    UIScrollBar和UIScrollView结合使用效果图如下: 一:使用步骤  1.创建一个UIScrollView   2.然后创建一个UIScrollBar 3.打开UIScrollView ...

  4. python多线程爬虫:亚马逊价格

    import re import requests import threading import time from time import ctime,sleep from queue impor ...

  5. sql 注入安全过滤-安全模块

    <?php /** * 安全模块 * Email:zhangyuan@tieyou.com * 主要针对xss跨站攻击.sql注入等敏感字符串进行过滤 * @author hkshadow */ ...

  6. 47、ListView setSelection() 和 setSelectionFromTop()

    http://blog.csdn.net/manoel/article/details/39183025 http://blog.csdn.net/a859522265/article/details ...

  7. 带参数的main函数

    带参数的main函数 int main(int argc,char **argv)  或int main(int argc,char *argv[])  /*解析 依据<C程序设计语言(第二版. ...

  8. 3280 easyfinding

    3280 easyfinding  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Description 给一个M ...

  9. add jars、add external jars、add library、add class folder的区别

    add external jars = 增加工程外部的包add jars = 增加工程内包add library = 增加一个库add class folder = 增加一个类文件夹 add jar是 ...

  10. SPDY

    转载SPDY 是什么 SPDY 是 Google 开发的基于传输控制协议 (TCP) 的应用层协议 ,开发组正在推动 SPDY 成为正式标准(现为互联网草案).SPDY 协议旨在通过压缩.多路复用和优 ...