`
haoningabc
  • 浏览: 1445663 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

udp的socket的helloworld

阅读更多
来自百度
[root@red54apple test]# cat udpclient.c 
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <unistd.h>

#define MAXLINE 80
#define SERV_PORT 8888

void do_cli(FILE *fp, int sockfd, struct sockaddr *pservaddr, socklen_t servlen)
{
		int n;
		char sendline[MAXLINE], recvline[MAXLINE + 1];

		/* connect to server */
		if(connect(sockfd, (struct sockaddr *)pservaddr, servlen) == -1)
		{
				perror("connect error");
				exit(1);
		}

		while(fgets(sendline, MAXLINE, fp) != NULL)
		{
				/* read a line and send to server */
				write(sockfd, sendline, strlen(sendline));
				/* receive data from server */
				n = read(sockfd, recvline, MAXLINE);
				if(n == -1)
				{
						perror("read error");
						exit(1);
				}
				recvline[n] = 0; /* terminate string */
				fputs(recvline, stdout);
		}
}

int main(int argc, char **argv)
{
		int sockfd;
		struct sockaddr_in servaddr;

		/* check args */
		if(argc != 2)
		{
				printf("usage: udpclient <IPaddress>\n");
				exit(1);
		}

		/* init servaddr */
		bzero(&servaddr, sizeof(servaddr));
		servaddr.sin_family = AF_INET;
		servaddr.sin_port = htons(SERV_PORT);
		if(inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0)
		{
				printf("[%s] is not a valid IPaddress\n", argv[1]);
				exit(1);
		}

		sockfd = socket(AF_INET, SOCK_DGRAM, 0);

		do_cli(stdin, sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));

		return 0;
}
[root@red54apple test]#




[root@red54apple test]# cat udpserv.c 
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>

#define MAXLINE 80
#define SERV_PORT 8888

void do_echo(int sockfd, struct sockaddr *pcliaddr, socklen_t clilen)
{
		int n;
		socklen_t len;
		char mesg[MAXLINE];

		for(;;)
		{
				len = clilen;
				/* waiting for receive data */
				n = recvfrom(sockfd, mesg, MAXLINE, 0, pcliaddr, &len);
				/* sent data back to client */
				sendto(sockfd, mesg, n, 0, pcliaddr, len);
		}
}

int main(void)
{
		int sockfd;
		struct sockaddr_in servaddr, cliaddr;

		sockfd = socket(AF_INET, SOCK_DGRAM, 0); /* create a socket */

		/* init servaddr */
		bzero(&servaddr, sizeof(servaddr));
		servaddr.sin_family = AF_INET;
		servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
		servaddr.sin_port = htons(SERV_PORT);

		/* bind address and port to socket */
		if(bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) == -1)
		{
				perror("bind error");
				exit(1);
		}

		do_echo(sockfd, (struct sockaddr *)&cliaddr, sizeof(cliaddr));

		return 0;
}
[root@red54apple test]# 


检查方法
netstat -ln|grep 8888
分享到:
评论
1 楼 入人之间 2012-05-27  
支持一下!学习中。。

相关推荐

    C++ UDP HelloWorld

    by Koma http://blog.csdn.net/wangningyu

    python实现简单socket通信的方法

    刚刚开始接触python,实现了一个helloworld程序—关于udp协议的socket通信demo。 首先服务端这边的实现如下: import socket, traceback host = '' # Bind to all interfaces port = 51500 # Step1: 创建socket对象...

    java高手真经 光盘源码

    HelloWorld.zip 01.Java入门样例HelloWorld demo.zip 03.Eclipse入门样例demo 第2部分(3个程序包) javasyntax.zip 05.Java核心语法详解 javaoop.zip 06.Java面向对象编程(计算器) javaexception.zip 07....

    Java高手真经(编程基础卷)光盘全部源码 免积分

    HelloWorld.zip 01.Java入门样例HelloWorld demo.zip 03.Eclipse入门样例demo 第2部分(3个程序包) javasyntax.zip 05.Java核心语法详解 javaoop.zip 06.Java面向对象编程(计算器) javaexception.zip 07....

    Java高手真经(编程基础卷)光盘全部源码

    HelloWorld.zip 01.Java入门样例HelloWorld demo.zip 03.Eclipse入门样例demo 第2部分(3个程序包) javasyntax.zip 05.Java核心语法详解 javaoop.zip 06.Java面向对象编程(计算器) javaexception.zip 07.Java...

    网络应用程序设计 | 西电课件 PDF

    │ │ │ │ helloworld.c │ │ │ │ │ │ │ ├─.settings │ │ │ │ org.eclipse.cdt.managedbuilder.core.prefs │ │ │ │ │ │ │ └─Debug │ │ │ helloworld │ │ │ helloworld.d │ │ │ ...

    unix平台下c语言高级编程指南

    11.5 "HelloWorld!"示例 11.6 管理器 11.7 按钮 11.8 X事件 11.9 其他Widget简介 11.10 菜单 11.11 对话框 第12章 Widget与X事件汇总 12.1 Widget 12.2 X事件 第四部分 常用的编程工具 第13章 编译器及调试...

    Linux C 一站式学习

    1. 汇编程序的Hello world 2. C标准I/O库函数与Unbuffered I/O函数 3. open/close 4. read/write 5. lseek 6. fcntl 7. ioctl 8. mmap 29. 文件系统 1. 引言 2. ext2文件系统 2.1. 总体存储布局 2.2. 实例剖析 2.3. ...

    java自学之道

    1、Helloworld.java 2、标识符 3、关键字 4、常量 5、变量 6、语句 6.1 if语句和switch语句 6.1.2 if语句举例 6.1.3 switch语句 6.2 for循环语句 6.3 while语句和do-while语句 6.3.1 while语句形式 6.3.2 do-...

    [Mastering.Node.js(2013.11) 精通Node.js

    学习node.js的好书 下面是目录: Preface 1 ...Hello World 309 Creating a calculator 311Table of Contents [ vii ] Implementing callbacks 313 Closing thoughts 314 Links and resources 315 Index 317

    宋劲彬的嵌入式C语言一站式编程

    1. 继续Hello World 2. 常量 3. 变量 4. 赋值 5. 表达式 6. 字符类型与字符编码 3. 简单函数 1. 数学函数 2. 自定义函数 3. 形参和实参 4. 全局变量、局部变量和作用域 4. 分支语句 1. if语句 2. if/else语句 3. ...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    1.3.2 编译自己的HelloWorld程序 11 1.3.3 让代码运行起来 13 1.4 初探Hello World 14 1.4.1 类(Class):Java世界中一类物体 14 1.4.2 方法(Method):物体的功能 15 1.4.3 main()方法:所有Java程序执行的...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    1.3.2 编译自己的HelloWorld程序 11 1.3.3 让代码运行起来 13 1.4 初探Hello World 14 1.4.1 类(Class):Java世界中一类物体 14 1.4.2 方法(Method):物体的功能 15 1.4.3 main()方法:所有Java程序执行的...

    python3.6.5参考手册 chm

    socket socketserver ssl statistics struct subprocess sys telnetlib time timeit tkinter traceback tracemalloc typing unicodedata unittest.mock urllib.request urllib.robotparser venv ...

    SimIt-ARM-3.0 ARM指令模拟器

    printf("hello world\n"); __asm("mov r0,#2\n\t" "swi 0x1\n\t"); // syscall: exit(2); } [root@ORA9 gcc-asm]# arm-linux-gcc -v Reading specs from /usr/local/arm/3.4.1/bin/../lib/gcc/arm-linux/3.4.1/...

    嵌入式Linux应用程序开发标准教程(第2版全)

    《嵌入式Linux应用程序开发标准教程(第2版)》主要分为3个部分,包括Linux基础、搭建嵌入式Linux环境和嵌入式Linux的应用开发。Linux基础部分从Linux...12.3 实验内容——使用Qt编写“Hello,World”程序 12.4 本章小结

    嵌入式Linux应用程序开发详解

    目录 第1章 Linux快速入门 1 1.1 嵌入式Linux基础 1 1.1.1 Linux发展概述 1 1.1.2 Linux作为嵌入式操作系统的优势 2 ...12.3 实验内容——使用Qt编写“Hello,World”程序 420 本章小结 428

Global site tag (gtag.js) - Google Analytics