发送方:
/*
* 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编程,包括客户端和服务器端的实现。 首先,我们要理解SOCKET的基本概念。在计算机网络中,SOCKET是一种进程间通信(IPC)机制,它允许通过网络连接的两台机器上的进程相互...
本资料"基于linux的socket编程.rar"深入探讨了C语言在Linux环境下的Socket编程,涵盖了基础概念到高级应用,包括多并发处理和TCP、UDP协议的实例。 首先,我们来理解一下基本的套接口概念。套接字是操作系统提供的...
通过分析和运行这些源代码,学习者可以深入理解Linux下Socket编程的基础知识,以及广播、组播和UDP的工作原理。同时,由于这些代码是用标准C编写的,因此稍作修改,即可在Windows环境下运行,具有良好的跨平台性。
在IT领域,Linux下的Socket编程是一项基础且重要的技能,它涉及到网络通信的核心技术。这篇博客“Linux下Socket编程”很可能会深入探讨如何在Linux操作系统环境下使用Socket接口进行网络编程,这是构建服务器端和...
在IT领域,Linux Socket编程是网络通信的核心技术之一,它为开发者提供了在Linux操作系统上实现进程间通信(IPC)和网络通信的接口。本实战指南将深入探讨这一主题,帮助你掌握如何在Linux环境中构建高效的网络应用...
文档提到了Linux公社网站,这表明了作者可能提供了一个与Linux操作系统相关的信息网站的链接,其中可能包含更多关于Linux平台下C语言Socket编程的资源和教程。 ### 总结 整个文档是一份对于初学者友好、深入浅出的...
Socket编程是C语言在实现网络通信中的核心部分,它允许不同计算机之间的进程进行数据交换。本项目涉及的"Linux C语言 socket通信聊天小程序"是一个基础的网络聊天应用,支持群聊和私聊功能。 首先,我们需要理解...
在Linux操作系统中,Socket编程是一种实现网络通信的基本方式,它为进程间通信(IPC)提供了接口,同时也广泛应用于客户端和服务器之间的数据交换。本聊天软件是基于Linux Socket编程实现的,尽管目前还不支持用户...
### Linux UDP Socket 非阻塞模式与阻塞模式的区别详解 #### 一、引言 在进行网络编程时,我们经常会遇到阻塞模式与非阻塞模式的选择问题。这两种模式直接影响程序的运行效率和资源利用率。本文将详细介绍在Linux...
在IT领域,Linux和Socket编程是构建网络应用程序的基础。Linux作为一个开源操作系统,为开发者提供了丰富的API和工具,而Socket则是网络通信的核心接口。本实战指南将深入探讨如何在Linux环境中运用Socket进行网络...
【Linux网络编程:Socket UDP详解】 在Linux系统中,网络编程是通过Socket接口来实现的。Socket提供了进程间通信的能力,使得分布在不同机器上的应用程序能够相互通信。本篇文章将详细解析一个简单的UDP(User ...
在Linux下,Socket编程可以使用不同的编程语言实现,如C、C++等,其中C语言是最常用的一种,因为它提供了与操作系统底层交互的丰富接口。 Socket编程根据传输协议的不同,可以分为基于TCP的Socket编程和基于UDP的...
Linux Socket编程是网络编程的重要组成部分,它允许程序通过网络发送和接收数据。在这个"实战Linux Socket编程源码"中,我们可以深入理解并实践Socket的工作原理和应用。源代码的第11章着重于处理多个客户端的连接,...
本文将深入探讨Linux下的Socket编程,尤其是通过C语言实现的相关知识。 首先,我们需要了解Socket的基本概念。Socket可以看作是网络上的端点,用于发送和接收数据。在Linux中,Socket编程涉及到以下几个关键步骤: ...
描述中提到的"socket网络编程在linux下的实现,支持tcp/udp两种协议",这表明这个压缩包可能包含了示例代码或教程,教你如何在Linux系统中使用套接字API进行TCP和UDP编程。对于TCP,你可能会学习到如何建立连接、...
首先,Linux C Socket编程是使用C语言在Linux操作系统下进行网络通信的一种方式。Socket接口是网络编程的标准接口,它提供了进程间通信(IPC)的能力,尤其是在不同主机之间进行数据传输。在C语言中,我们通常使用`...
在IT行业中,Linux和Socket编程是构建网络应用的基础,尤其对于服务器端的开发而言,C语言作为底层系统编程的常用工具,与Linux和Socket相结合,能够实现高效且灵活的网络通信。下面将深入探讨这个主题。 一、Linux...
Linux Socket 编程入门 Linux Socket 编程入门是指在 Linux 操作系统中使用 Socket 编程技术来实现网络通信的过程。Socket 编程是网络编程的基础,是实现网络通信的核心技术。本教程将从基础开始,详细介绍 Linux ...
Linux Socket编程是网络编程的重要组成部分,它为开发者提供了在Linux操作系统上进行网络通信的基础接口。本实战教程将深入探讨如何利用Socket API构建高效、可靠的网络应用程序。以下是对标题和描述中涉及的知识点...
Linux Socket编程是网络编程的重要组成部分,它允许程序员创建和使用网络连接,特别是在TCP/IP协议栈上构建应用程序。本文将深入探讨TCP服务器端的Socket编程,为初学者提供基础的指导。 首先,理解Socket编程的...