- 浏览: 2031791 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (651)
- ACE (35)
- BAT (9)
- C/C++ (116)
- fast-cgi (14)
- COM (27)
- python (59)
- CGI (4)
- C# (2)
- VC (84)
- DataBase (29)
- Linux (96)
- P2P (6)
- PHP (15)
- Web (6)
- Memcached (7)
- IME输入法 (11)
- 设计模式 (2)
- 搜索引擎 (1)
- 个人情感 (4)
- 笔试/面试 (3)
- 一亩三分地 (33)
- 历史 (2)
- 地理 (1)
- 人物 (3)
- 经济 (0)
- 不仅仅是笑哦 (43)
- 小故事大道理 (2)
- http://www.bjdsmyysjk120.com/ (0)
- http://www.bjdsmyy120.com/ (0)
- 它山之石可以攻玉 (15)
- 大学生你关注些什么 (28)
- 数据恢复 (1)
最新评论
-
luokaichuang:
这个规范里还是没有让我明白当浏览器上传文件时,STDIN的消息 ...
FastCGI规范 -
effort_fan:
好文章!学习了,谢谢分享!
com技术简介 -
vcell:
有错误os.walk(strPath)返回的已经是全部的文件和 ...
通过python获取目录的大小 -
feifeigd:
feifeigd 写道注意:文章中的CPP示例第二行 #inc ...
ATL入门:利用ATL编写简单的COM组件 -
feifeigd:
注意:文章中的CPP示例第二行 #include " ...
ATL入门:利用ATL编写简单的COM组件
UDP客户端:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt();* 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();
4、循环接收数据,用函数recvfrom();
5、关闭网络连接;
UDP编程的客户端一般步骤是:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt();* 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();* 可选
4、设置对方的IP地址和端口等属性;
5、发送数据,用函数sendto();
6、关闭网络连接;
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <ctype.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <errno.h>
#include <stdlib.h>
//#include <signal.h>
#define MAXLINE 80
int port = 8000;
int main(void)
{
struct sockaddr_in sin;
struct sockaddr_in rin;
int sock_fd;
int address_size;
char buf[MAXLINE];
char str[INET_ADDRSTRLEN];
int i;
int len;
int n;
bzero(&sin, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = INADDR_ANY;
sin.sin_port = htons(port);
sock_fd = socket(AF_INET, SOCK_DGRAM, 0);
if (-1 == sock_fd)
{
perror("call to socket");
exit(1);
}
n = bind(sock_fd, (struct sockaddr *)&sin, sizeof(sin));
if (-1 == n)
{
perror("call to bind");
exit(1);
}
while(1)
{
address_size = sizeof(rin);
n = recvfrom(sock_fd, buf, MAXLINE, 0, (struct sockaddr *)&rin, &address_size);
if (-1 == n)
{
perror("call to recvfrom.\n");
exit(1);
}
printf("you ip is %s at port %d:%s\n",
inet_ntop(AF_INET, &rin.sin_addr,str,sizeof(str)),
ntohs(rin.sin_port),buf);
len = strlen(buf);
for (i = 0; i < len; i++)
{
buf[i] = toupper(buf[i]);
}
n = sendto(sock_fd, buf, len+1, 0, (struct sockaddr *)&rin, address_size);
if (-1 == n)
{
perror("call to sendto\n");
exit(1);
}
}
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <errno.h>
#include <stdlib.h>
#define MAXLINE 80
int port = 8000;
int main(int argc, char *argv[])
{
struct sockaddr_in pin;
struct sockaddr_in rin;
int sock_fd;
char buf[MAXLINE];
char str[MAXLINE];
char sip[INET_ADDRSTRLEN];
int n;
int address_size;
bzero(&pin, sizeof(pin));
pin.sin_family = AF_INET;
inet_pton(AF_INET, "127.0.0.1", &pin.sin_addr);
pin.sin_port = htons(port);
sock_fd = socket(AF_INET, SOCK_DGRAM, 0);
if (-1 == sock_fd)
{
perror("call to socket");
exit(1);
}
while(NULL != fgets(str,MAXLINE, stdin))
{
sendto(sock_fd, str, strlen(str) + 1, 0, (struct sockaddr *)&pin, sizeof(pin));
if (-1 == n)
{
perror("call to sendto.\n");
exit(1);
}
address_size = sizeof(rin);
n = recvfrom(sock_fd, buf, MAXLINE, 0, (struct sockaddr *)&rin, &address_size);
if (-1 == n)
{
perror("call to recvfrom.\n");
exit(1);
}
else
{
printf("Response from %s port %d:%s\n",
inet_ntop(AF_INET, &rin.sin_addr, sip, sizeof(sip)),
ntohs(rin.sin_port),buf);
}
}
close(sock_fd);
if (-1 == n)
{
perror("call to close.\n");
exit(1);
}
return 0;
}
发表评论
-
Berkeley DB 使用经验总结
2012-08-27 14:41 3084作者:陈磊 NoSQL是现在互联网Web2.0时代备受 ... -
嵌入式数据库系统Berkeley DB
2012-08-27 14:37 1528前言 UNIX/LINUX平台下的数据库种类非常多 ... -
C语言中标准输入流、标准输出流、标准错误输出流
2011-06-13 14:32 9279C语言中标准输入流、标准输出流、标准错误输出流 在 ... -
Rsync 实现原理
2011-05-12 20:06 8315Rsync 实现原理 前言 关于rsync的原始文档 ... -
c++简单的虚函数测试
2011-04-27 14:25 1014#include <iostream> u ... -
C++文件行查找
2011-04-26 14:10 1401#include <iostream> # ... -
c++偏特化简单示例
2011-04-13 11:17 2152c++偏特化 // temp1.c ... -
GDB调试精粹及使用实例
2011-03-16 14:06 1136GDB调试精粹及使用实例 一:列文件清单 1. ... -
简单的ini文件解析
2011-02-12 16:36 1613int GetKeyVal(const string s ... -
scanf族函数高级用法
2011-01-25 16:00 2552如何解释 fscanf(fd,&quo ... -
使用scons替代makefile(1)
2011-01-25 11:58 3724早在多年前我刚开始接触linux下的C程序时,经常被makef ... -
使用scons替代makefile(2)
2011-01-25 11:57 3577本篇文章接着上一篇进一步介绍scons的使用方法,主要介绍静态 ... -
使用scons替代makefile(3)
2011-01-25 11:55 4819在上两篇文章中已经简单介绍了用scons编译库文件,可执行程序 ... -
C 支持动态添加测试数据的测试代码
2011-01-13 17:22 1116/下面的定义为了支持可扩增。 //当需要增加一个新的测试用列 ... -
Linux下Makefile的automake生成
2010-12-28 16:55 1095******************helloworld.c* ... -
SCons笔记(详细版)
2010-12-23 16:11 105021. 基本使用 SConstruct文件就功能而言相当于Ma ... -
scons 学习
2010-12-23 11:14 2179scons 学习 作者:Sam(甄峰) sam_code@h ... -
scons随笔
2010-12-22 20:20 4702scons随笔 Scons是新一代的软件构件工具,或者说ma ... -
Scons在linux下的安装和使用
2010-12-21 11:59 3279因为正在用的一个开源软件需要的Developm ... -
排列组合的实现
2010-12-20 12:41 1057简单算法: 从前往后(或者从后往前)每次交换一个位置。当存在 ...
相关推荐
下面将详细介绍 Linux 下进行 UDP 编程的三个主要模型:基本服务器模型、循环服务器模型和并发服务器模型。 ### 1. 基本服务器模型 基本服务器模型是最简单的 UDP 服务器实现,通常用于接收单一客户端的请求。以下...
本压缩包文件"udp.rar_linux udp服务器_linux upd_linux 服务器_udp服务器 Linux_upd sender"包含了一些关于在Linux上构建UDP服务器和客户端程序的资源。 首先,我们来看"www.pudn.com.txt"这个文件,通常这类文本...
本教程将深入探讨如何在Linux环境下进行UDP编程,包括客户端和服务器端的实现。 首先,理解UDP的特点至关重要。与TCP相比,UDP不提供连接建立、数据确认、流量控制或拥塞控制等服务,因此它的开销较小,但同时也...
Linux UDP编程是网络编程中的一个重要部分,UDP(User Datagram Protocol,用户数据报协议)是一种无连接的、不可靠的传输层协议,适用于实时性要求高、对数据完整性要求不那么严格的应用场景。在这个主题中,我们将...
综上所述,实现Linux下的UDP并发服务器涉及的关键技术点包括:UDP协议的理解、套接字编程、`fork()`创建子进程、`recvfrom()`和`sendto()`处理数据、进程管理以及可能的多线程编程。这些知识点是网络编程特别是...
在Linux环境下建立UDP服务器和客户端,我们需要了解以下几个关键知识点: 1. **套接字编程**:在Linux中,无论是TCP还是UDP,进行网络通信都离不开套接字(socket)编程。套接字是进程间通信的一种方式,提供了在...
本资料包包含了一个简单的UDP服务器和客户端的示例代码,以及一个公共函数头文件,适用于学习和理解Linux下的UDP网络编程。 首先,我们来看服务器程序。在UDP服务器中,主要任务是创建一个socket,绑定到特定的IP...
总结来说,这个项目涵盖了UDP服务器编程的基本概念,使用了Linux环境和GCC编译器,以及C语言作为实现语言。理解这些知识点对于开发网络应用程序至关重要。通过阅读和分析`udp_server.c`源代码,你可以深入学习如何在...
下面将详细介绍Java进行UDP编程的相关知识点。 **一、UDP的特点** 1. **无连接性**:UDP不建立连接,直接发送数据,因此速度快,但可能会丢失数据或顺序错乱。 2. **不可靠性**:UDP不保证数据包的接收,也不检测和...
本资料包“udp_linux.rar_udp服务器 Linux”显然是针对在Linux环境下构建UDP服务器的实践教程。 在构建UDP服务器时,主要涉及以下知识点: 1. **套接字(Sockets)编程**:套接字是网络通信中的接口,提供了进程间...
linux下的网卡测速程序,使用udp编写,同时也是一个很好的linux网络编程范例,cudp为客户端程序,而sudp为服务器程序
总结,这个项目涵盖了Linux网络编程中的UDP协议、多线程技术以及客户端-服务器通信模型。通过实践这样的项目,开发者可以提升对网络编程的理解,学习如何处理并发连接,并熟悉Linux环境下的开发流程。
描述中提到的"socket网络编程在linux下的实现,支持tcp/udp两种协议",这表明这个压缩包可能包含了示例代码或教程,教你如何在Linux系统中使用套接字API进行TCP和UDP编程。对于TCP,你可能会学习到如何建立连接、...
在标签"udp linux_udp linux_udp__makefile udp_linux__"中,`linux_udp`和`udp_linux`暗示了这是与Linux系统相关的UDP编程,而`makefile_udp`提示我们项目中包含了一个`Makefile`,这是用于自动化编译和链接C或C++...
本文将深入探讨在Linux环境下,使用C语言实现TCP服务器(tcpserver)、TCP客户端(tcpclient)、UDP服务器(udpserver)以及UDP客户端(udpclient)的并发编程,并涉及select模型用于处理多个连接请求。以下是关于...
Python网络编程在Linux环境下是一个强大的工具,用于构建服务器端应用程序和服务。这个主题涵盖了多个关键知识点,包括基础概念、Python的网络库、套接字编程、并发处理以及在Linux系统中的应用。 1. **网络编程...
Linux UDP编程是网络通信中的重要一环,尤其在嵌入式ARM开发板上,它扮演着不可或缺的角色。UDP,即用户数据报协议(User Datagram Protocol),是一种无连接的、不可靠的传输层协议,与TCP相比,它具有更低的开销和...
在这个“Udp编程”的主题中,我们将深入探讨UDP的基本原理、编程接口以及如何通过实例进行UDP客户端和服务器的开发。 首先,理解UDP的特点至关重要。与TCP(Transmission Control Protocol)不同,UDP不提供连接...
总结来说,Linux下的TCP和UDP编程涉及理解网络通信的基础概念,熟练掌握socket API的使用,以及对协议特性的深入理解。通过实践这些小例子,开发者可以更好地理解这两种协议的工作方式,并为开发网络应用程序打下...
linux下多线程udp网络编程实现消息驱动多状态机流转,收发一体