`

Linux C socket 编程之UDP

 
阅读更多

发送方:

/*
* File: main.c
* Author: tianshuai
*
* Created on 2011年11月29日, 下午10:34
*
* 主要实现:发送20个文本消息,然后再发送一个终止消息
*/

#include <stdio.h>
#include <stdlib.h>

#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>

int port=6789;
int main(int argc, char** argv) {
int socket_descriptor; //套接口描述字
int iter=0;
char buf[80];
struct sockaddr_in address;//处理网络通信的地址

bzero(&address,sizeof(address));
address.sin_family=AF_INET;
address.sin_addr.s_addr=inet_addr("127.0.0.1");//这里不一样
address.sin_port=htons(port);

//创建一个 UDP socket

socket_descriptor=socket(AF_INET,SOCK_DGRAM,0);//IPV4 SOCK_DGRAM 数据报套接字(UDP协议)

for(iter=0;iter<=20;iter++)
{
/*
* sprintf(s, "%8d%8d", 123, 4567); //产生:" 123 4567"
* 将格式化后到 字符串存放到s当中
*/
sprintf(buf,"data packet with ID %d\n",iter);

/*int PASCAL FAR sendto( SOCKET s, const char FAR* buf, int len, int flags,const struct sockaddr FAR* to, int tolen);  
* s:一个标识套接口的描述字。 
* buf:包含待发送数据的缓冲区。  
* len:buf缓冲区中数据的长度。 
* flags:调用方式标志位。  
* to:(可选)指针,指向目的套接口的地址。 
* tolen:to所指地址的长度。
   */
sendto(socket_descriptor,buf,sizeof(buf),0,(struct sockaddr *)&address,sizeof(address));
}

sprintf(buf,"stop\n");
sendto(socket_descriptor,buf,sizeof(buf),0,(struct sockaddr *)&address,sizeof(address));//发送stop 命令
close(socket_descriptor);
printf("Messages Sent,terminating\n");

exit(0);

return (EXIT_SUCCESS);
}

接受方:

/*
* File: main.c
* Author: tianshuai
*
* Created on 2011年11月29日, 下午10:34
*/

#include <stdio.h>
#include <stdlib.h>

#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>

int port=6789;

int main(int argc, char** argv) {

int sin_len;
char message[256];

int socket_descriptor;
struct sockaddr_in sin;
printf("Waiting for data form sender \n");

bzero(&sin,sizeof(sin));
sin.sin_family=AF_INET;
sin.sin_addr.s_addr=htonl(INADDR_ANY);
sin.sin_port=htons(port);
sin_len=sizeof(sin);

socket_descriptor=socket(AF_INET,SOCK_DGRAM,0);
bind(socket_descriptor,(struct sockaddr *)&sin,sizeof(sin));

while(1)
{
recvfrom(socket_descriptor,message,sizeof(message),0,(struct sockaddr *)&sin,&sin_len);
printf("Response from server:%s\n",message);
if(strncmp(message,"stop",4) == 0)//接受到的消息为 “stop”
{

printf("Sender has told me to end the connection\n");
break;
}
}

close(socket_descriptor);
exit(0);

return (EXIT_SUCCESS);
}



分享到:
评论

相关推荐

    linux下C语言SOCKET编程客户端、服务器端代码

    本篇文章将深入探讨Linux下的C语言SOCKET编程,包括客户端和服务器端的实现。 首先,我们要理解SOCKET的基本概念。在计算机网络中,SOCKET是一种进程间通信(IPC)机制,它允许通过网络连接的两台机器上的进程相互...

    基于linux的socket编程.rar

    本资料"基于linux的socket编程.rar"深入探讨了C语言在Linux环境下的Socket编程,涵盖了基础概念到高级应用,包括多并发处理和TCP、UDP协议的实例。 首先,我们来理解一下基本的套接口概念。套接字是操作系统提供的...

    linux下socket编程(广播组播和udp)源码

    通过分析和运行这些源代码,学习者可以深入理解Linux下Socket编程的基础知识,以及广播、组播和UDP的工作原理。同时,由于这些代码是用标准C编写的,因此稍作修改,即可在Windows环境下运行,具有良好的跨平台性。

    Linux下Socket编程

    在IT领域,Linux下的Socket编程是一项基础且重要的技能,它涉及到网络通信的核心技术。这篇博客“Linux下Socket编程”很可能会深入探讨如何在Linux操作系统环境下使用Socket接口进行网络编程,这是构建服务器端和...

    实战Linux Socket编程

    在IT领域,Linux Socket编程是网络通信的核心技术之一,它为开发者提供了在Linux操作系统上实现进程间通信(IPC)和网络通信的接口。本实战指南将深入探讨这一主题,帮助你掌握如何在Linux环境中构建高效的网络应用...

    C语言Socket简单编程指南

    文档提到了Linux公社网站,这表明了作者可能提供了一个与Linux操作系统相关的信息网站的链接,其中可能包含更多关于Linux平台下C语言Socket编程的资源和教程。 ### 总结 整个文档是一份对于初学者友好、深入浅出的...

    linux C语言 socket通信聊天小程序

    Socket编程是C语言在实现网络通信中的核心部分,它允许不同计算机之间的进程进行数据交换。本项目涉及的"Linux C语言 socket通信聊天小程序"是一个基础的网络聊天应用,支持群聊和私聊功能。 首先,我们需要理解...

    Linux下Socket编程 聊天软件

    在Linux操作系统中,Socket编程是一种实现网络通信的基本方式,它为进程间通信(IPC)提供了接口,同时也广泛应用于客户端和服务器之间的数据交换。本聊天软件是基于Linux Socket编程实现的,尽管目前还不支持用户...

    Linux UDP socket 设置为的非阻塞模式与阻塞模式区别

    ### Linux UDP Socket 非阻塞模式与阻塞模式的区别详解 #### 一、引言 在进行网络编程时,我们经常会遇到阻塞模式与非阻塞模式的选择问题。这两种模式直接影响程序的运行效率和资源利用率。本文将详细介绍在Linux...

    实战linux+socket编程

    在IT领域,Linux和Socket编程是构建网络应用程序的基础。Linux作为一个开源操作系统,为开发者提供了丰富的API和工具,而Socket则是网络通信的核心接口。本实战指南将深入探讨如何在Linux环境中运用Socket进行网络...

    Linux网络编程 Socket UDP形式(包括服务器端和接收端)

    【Linux网络编程:Socket UDP详解】 在Linux系统中,网络编程是通过Socket接口来实现的。Socket提供了进程间通信的能力,使得分布在不同机器上的应用程序能够相互通信。本篇文章将详细解析一个简单的UDP(User ...

    Linux的SOCKET编程详解 pdf格式

    在Linux下,Socket编程可以使用不同的编程语言实现,如C、C++等,其中C语言是最常用的一种,因为它提供了与操作系统底层交互的丰富接口。 Socket编程根据传输协议的不同,可以分为基于TCP的Socket编程和基于UDP的...

    实战Linux Socket编程源码

    Linux Socket编程是网络编程的重要组成部分,它允许程序通过网络发送和接收数据。在这个"实战Linux Socket编程源码"中,我们可以深入理解并实践Socket的工作原理和应用。源代码的第11章着重于处理多个客户端的连接,...

    LINUX 下SOCKET 编程

    本文将深入探讨Linux下的Socket编程,尤其是通过C语言实现的相关知识。 首先,我们需要了解Socket的基本概念。Socket可以看作是网络上的端点,用于发送和接收数据。在Linux中,Socket编程涉及到以下几个关键步骤: ...

    tcp+udp.rar_TCP/IP_linux udp socket_linux 网络编程_socket linux udp

    描述中提到的"socket网络编程在linux下的实现,支持tcp/udp两种协议",这表明这个压缩包可能包含了示例代码或教程,教你如何在Linux系统中使用套接字API进行TCP和UDP编程。对于TCP,你可能会学习到如何建立连接、...

    linux c socket 编程 公司现用小软件源代码

    首先,Linux C Socket编程是使用C语言在Linux操作系统下进行网络通信的一种方式。Socket接口是网络编程的标准接口,它提供了进程间通信(IPC)的能力,尤其是在不同主机之间进行数据传输。在C语言中,我们通常使用`...

    Linux+socket C语言编程

    在IT行业中,Linux和Socket编程是构建网络应用的基础,尤其对于服务器端的开发而言,C语言作为底层系统编程的常用工具,与Linux和Socket相结合,能够实现高效且灵活的网络通信。下面将深入探讨这个主题。 一、Linux...

    Linuxsocket编程入门[参照].pdf

    Linux Socket 编程入门 Linux Socket 编程入门是指在 Linux 操作系统中使用 Socket 编程技术来实现网络通信的过程。Socket 编程是网络编程的基础,是实现网络通信的核心技术。本教程将从基础开始,详细介绍 Linux ...

    实战Linux Socket编程.rar

    Linux Socket编程是网络编程的重要组成部分,它为开发者提供了在Linux操作系统上进行网络通信的基础接口。本实战教程将深入探讨如何利用Socket API构建高效、可靠的网络应用程序。以下是对标题和描述中涉及的知识点...

    Linux socket 编程入门

    Linux Socket编程是网络编程的重要组成部分,它允许程序员创建和使用网络连接,特别是在TCP/IP协议栈上构建应用程序。本文将深入探讨TCP服务器端的Socket编程,为初学者提供基础的指导。 首先,理解Socket编程的...

Global site tag (gtag.js) - Google Analytics