Socket编程基础——无连接UDP

与面向连接的网络连接相比,无连接的网络通信不需要在服务器与客户端之间建立连接。面向非连接的Socket通信是基于UDP的,服务器端不需要调用listen()accept()函数来等待客户端的连接;客户端直接向服务器发送数据。

1、服务器端
(1)建立Socket,绑定本地IP和端口

server=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
sAddr.sin_family=AF_INET;
sAddr.sin_port=htons(9000);
sAddr.sin_addr.s_addr=htonl(ADDR_ANY);
retVal=bind(server,(sockaddr*)&sAddr,sizeof(sAddr));

(2)等待客户连接、接收数据

sockaddr_in recvAddr;
int len=sizeof(recvAddr);
// 连接的客户端地址信息

recvfrom(server,buf,BUF_SIZE,0,(sockaddr*)&recvAddr,&len);
cout<<"Recv date from "<<inet_ntoa(recvAddr.sin_addr)<<" :"<<buf<<endl;
// 接收数据、recvAddr返回客户段信息

(3)发送数据

sendto(server,buf,strlen(buf),0,(sockaddr*)&recvAddr,len);

2、客户端
(1)建立Socket

client=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);

(2)远程服务器地址信息

sockaddr_in sAddr;
sAddr.sin_family=AF_INET;
sAddr.sin_port=htons(9000);
sAddr.sin_addr.s_addr=inet_addr("127.0.0.1");
int len=sizeof(sAddr);

(3)发送数据

sendto(client,buf,strlen(buf),0,(sockaddr*)&sAddr,len);

(4)接收数据

recvfrom(client,buf,BUF_SIZE,0,(sockaddr*)&sAddr,&len);
时间: 2024-08-07 08:18:04

Socket编程基础——无连接UDP的相关文章

Java笔记二十三.网络编程基础与UDP编程

网络编程基础与UDP编程 转载请表明出处:http://blog.csdn.net/u012637501(嵌入式_小J的天空) 一.网络编程基础 1.TCP/IP协议:TCP/IP协议是一个非常实用的网络应用程序通信协议,包括TCP(传输控制协议)和IP地址(计算机唯一标识号). 2.IP地址:IP在互联网中能唯一标识一台计算机,是每一台计算机的唯一标识(身份证),通过这个标识号来指定接收数据的计算机和识别发送数据的计算机,该标识号即为IP地址. (1)Ipv4:指在计算机中IP地址用4个字节(

c#socket编程基础 [转帖]

c#socket编程基础 Microsoft.Net Framework为应用程序访问Internet提供了分层的.可扩展的以及受管辖的网络服务,其名字空间System.Net和System.Net.Sockets包含丰富的类可以开发多种网络应用程序..Net类采用的分层结构允许应用程序在不同的控制级别上访问网络,开发人员可以根据需要选择针对不同的级别编制程序,这些级别几乎囊括了Internet的所有需要--从socket套接字到普通的请求/响应,更重要的是,这种分层是可以扩展的,能够适应Int

socket编程基础2

包含头文件<sys/socket.h> 功能:创建一个套接字用于通信 原型 int socket(int domain, int type, int protocol); 参数 domain :指定通信协议族(protocol family) type:指定socket类型,流式套接字SOCK_STREAM,数据报套接字SOCK_DGRAM,原始套接字SOCK_RAW protocol :协议类型 返回值:成功返回非负整数, 它与文件描述符类似,我们把它称为套接口描述字,简称套接字.失败返回-

socket编程基础3

服务器端尽可能使用RUSEADDR. 在绑定之前尽可能调用setsockopt来设置SO_REUSEADDR套接字选项. 使用SO_REUSEADDR选项可以使得不必等待TIME_WAIT状态消失就可以重启服务器. fork()产生一个进程来处理客户端与服务器端之间的消息.父进程保持监听状态连接.accept返回多个已连接套接字! echocli.c #include <unistd.h> #include <sys/types.h> #include <sys/socket

socket编程:简单UDP服务器/客户端编程

对于之前的TCP协议而言,他是可靠的字节流传输,而在socket编程中,在不需要保证数据传输正确安全的情况下.或者由用户自己完成传输确认情况/服务端客户端自己实现数据传输.套接字编程也提供了UDP协议的方法. 基于UDP(不是面向连接)的socket编程,分为客户端和服务器端. 客户端的流程如下: (1)创建套接字(socket) (2)和服务器端进行通信(sendto) (3)关闭套接字 因为在socket编程中,UDP是针对数据报的数据传输,所以socket专门定义了UDP所使用的函数接口.

java socket编程基础(转)

一,网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机. 而TCP层则提供面向应用的可靠(tcp)的或非可靠(UDP)的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的. 目前较为流行的网络编程模型是客户机/服务器(C/S)结构.即通信双方一方作为服务器等待客户提出请求并予以响应.客户则

Java从零开始学四十五(Socket编程基础)

一.网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机. 而TCP层则提供面向应用的可靠(tcp)的或非可靠(UDP)的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的. 目前较为流行的网络编程模型是客户机/服务器(C/S)结构.即通信双方一方作为服务器等待客户提出请求并予以响应.客户则

Java Socket编程基础篇

原文地址:Java Socket编程----通信是这样炼成的 Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket.像大家熟悉的QQ.MSN都使用了Socket相关的技术.下面就让我们一起揭开Socket的神秘面纱. Socket编程 网络基础知识点: 两台计算机间进行通讯需要以下三个条件 IP地址.协议.端口号: IP地址:定位应用所在机器的网络位置.(比如家庭住址:北京市朝阳区XX街道XX小区) 端口号

c#socket编程基础

Microsoft.Net Framework为应用程序访问Internet提供了分层的.可扩展的以及受管辖的网络服务,其名字空间System.Net和System.Net.Sockets包含丰富的类可以开发多种网络应用程序..Net类采用的分层结构允许应用程序在不同的控制级别上访问网络,开发人员可以根据需要选择针对不同的级别编制程序,这些级别几乎囊括了Internet的所有需要--从socket套接字到普通的请求/响应,更重要的是,这种分层是可以扩展的,能够适应Internet不断扩展的需要.