linux socket编程很好的学习文档

源代码在线查看: linux网络编程一步一步学-udp方式广播通讯(11).txt

软件大小: 94 K
上传用户: lwsnsfp17
关键词: socket linux 编程 文档
下载地址: 免注册下载 普通下载 VIP

相关代码

				Linux网络编程一步一步学-UDP方式广播通讯
				关键词: broadcast    UDP    广播    recvfrom    sendto                                           
				
				和前一篇文章<Linux网络编程一步一步学-UDP方式点对点通讯>一样,只是在客户端源代码里加一行设置socket属性为广播方式即可。
				需要加的一句是:
				setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &yes, sizeof(yes));
				
				源代码变成下面的:
				
				#include 
				#include 
				#include 
				#include 
				#include 
				#include 
				#include 
				#include 
				
				/*********************************************************************
				*filename: broadc-udpclient.c
				*purpose: 基本编程步骤说明,演示了UDP编程的广播客户端编程步骤
				*tidied by: zhoulifa(zhoulifa@163.com) 周立发(http://zhoulifa.bokee.com)
				Linux爱好者 Linux知识传播者 SOHO族 开发者 最擅长C语言
				*date time:2007-01-24 21:30:00
				*Note: 任何人可以任意复制代码并运用这些文档,当然包括你的商业用途
				* 但请遵循GPL
				*Thanks to: Google.com
				*Hope:希望越来越多的人贡献自己的力量,为科学技术发展出力
				* 科技站在巨人的肩膀上进步更快!感谢有开源前辈的贡献!
				*********************************************************************/
				int main(int argc, char **argv)
				{
				struct sockaddr_in s_addr;
				int sock;
				int addr_len;
				int len;
				char buff[128];
				int yes;
				
				/* 创建 socket */
				if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
				perror("socket");
				exit(errno);
				} else
				printf("create socket.\n\r");
				
				/* 设置通讯方式对广播,即本程序发送的一个消息,网络上所有主机均可以收到 */
				yes = 1;
				setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &yes, sizeof(yes));
				/* 唯一变化就是这一点了 */
				
				/* 设置对方地址和端口信息 */
				s_addr.sin_family = AF_INET;
				if (argv[2])
				s_addr.sin_port = htons(atoi(argv[2]));
				else
				s_addr.sin_port = htons(7838);
				if (argv[1])
				s_addr.sin_addr.s_addr = inet_addr(argv[1]);
				else {
				printf("消息必须有一个接收者!\n");
				exit(0);
				}
				
				/* 发送UDP消息 */
				addr_len = sizeof(s_addr);
				strcpy(buff, "hello i'm here");
				len = sendto(sock, buff, strlen(buff), 0,
				(struct sockaddr *) &s_addr, addr_len);
				if (len < 0) {
				printf("\n\rsend error.\n\r");
				return 3;
				}
				
				printf("send success.\n\r");
				return 0;
				}
				
				 
				编译这个程序用下列命令:
				gcc -Wall broadc-udpclient.c -o client
				运行程序用下列命令:
				./client 192.168.0.255 7838
				
				就会往192.168.0网络内所有主机发消息。
				其它主机如果运行了服务端:
				./server 自己的IP地址 7838
				则都会收到上述客户端发的消息了。			

相关资源