随笔分类 -  网络编程

上一页 1 ··· 3 4 5 6 7
摘要:高位字节优先和低位字节优先。Internet上数据以高位字节优先顺序在网络上传输,所以对于在内部是以低位字节优先方式存储数据的机器,在Internet上传输数据时就需要进行转换。第一个结构类型是:struct sockaddr 该类型是用来保存socket信息的structsockaddr{ unsigned shortsa_family; /* 地址族, AF_xxx */ charsa_data[14]; /* 14 字节的协议地址 */};sa_family一般为AF_INET;sa_data则包含该socket的IP地址和端口号。另外还有一种结构类型:structsockaddr_in 阅读全文
posted @ 2011-07-25 21:31 hnrainll 阅读(1145) 评论(0) 推荐(0) 编辑
摘要:我们已经知道,当把套接口地址传递给套接口函数时,总是通过指针传递的,即传递的是一个指向结构的指针。结构的长度也作为参数来传递,其传递的方式取决于结构的传递的方向:从进程到内核,还是从内核到进程。 1、从进程到内核传递的套接口结构有3个函数:bind,connect和sendto,这三个函数的一个参数是指向套接口结构的指针,另一个是结构的大小,如:structsockaddr_inserv;/*fill in serv[]*/connect(sockfd,(SA*)&serv,sizeof(serv)); 由于从进程到内核的参数是指向结构的指针和结构的大小,所以从进程到内核拷贝的数据是确 阅读全文
posted @ 2011-07-25 21:30 hnrainll 阅读(2025) 评论(0) 推荐(0) 编辑
摘要:SOCKET()我们使用系统调用socket()来获得文件描述符:#include<sys/types.h>#include<sys/socket.h>int socket(int domain,int type,int protocol);第一个参数domain设置为“AF_INET”。第二个参数是套接口的类型:SOCK_STREAM或SOCK_DGRAM。第三个参数设置为0。系统调用socket()只返回一个套接口描述符,如果出错,则返回-1。bind()一旦你有了一个套接口以后,下一步就是把套接口绑定到本地计算机的某一个端口上。但如果你只想使用connect()则 阅读全文
posted @ 2011-07-22 12:30 hnrainll 阅读(13042) 评论(1) 推荐(3) 编辑
摘要:stat函数讲解表头文件: #include <sys/stat.h> #include <unistd.h>定义函数: int stat(const char *file_name, struct stat *buf);函数说明: 通过文件名filename获取文件信息,并保存在buf所指的结构体stat中返回值: 执行成功则返回0,失败返回-1,错误代码存于errno错误代码: ENOENT 参数file_name指定的文件不存在 ENOTDIR 路径中的目录存在但却非真正的目录 ELOOP 欲打开的文件有过多符号连接问题,上限为16符号连接 EFAULT 参数bu 阅读全文
posted @ 2011-05-11 16:26 hnrainll 阅读(164441) 评论(1) 推荐(5) 编辑
摘要:转自:http://java-mzd.iteye.com/blog/1007577你所不知道的传输层题记:23页的文档上,满满当当的写满了笔记,纸质的东西,始终害怕丢失,还是选择把它总结到博客上来。PS.老规矩,列出可能遇到的20个问题,如果您是都能回答的高手,请您绕道,我是小菜,只做自己的学习笔记。1.传输层的主要功能是什么?2.传输层如何区分不同应用程序的数据流?3.传输层有哪些协议?4.什么是UDP协议?5.为什么有了UDP,还需要TCP?6.什么是TCP协议?7.怎么理解协议和程序?8.TCP是否真的有链接?9.链接是如何建立的(逻辑上)?10.所谓的建立TCP链接开销很大,具体是指什 阅读全文
posted @ 2011-05-09 06:24 hnrainll 阅读(1183) 评论(0) 推荐(0) 编辑
摘要:协议声明: 本协议是由日本人Shirouzu Hiroaki (白水 启章)先生编写。 wanpengcoder翻译于Mr.Kanazawa英文文档,转载请注明出处。http://www.cnblogs.com/wanpeng/ 如有翻译不当之处望提出,以便改进,衷心感谢您。IP信使传输协议(第9版草案) 1996/02/21 2003/01/14 修订 H.Shirouzu shirouzu@h.email.ne.jpOriginal ipmsg protocol specification is written in Japanese.最初的飞鸽传书协议说明书是日文书写。Thisdocu. 阅读全文
posted @ 2011-05-07 08:07 hnrainll 阅读(7932) 评论(0) 推荐(1) 编辑
摘要:Original ipmsg protocol specification is written in Japanese.This document was translated by Mr.Kanazawa.This document is not verified yet.---------------------------------------------------------------------- IP Messenger communication protocol (Draft-9) 1996/02/21 Modified 2003/01/14 H.Shirouzu sh 阅读全文
posted @ 2011-05-07 08:02 hnrainll 阅读(1160) 评论(0) 推荐(0) 编辑
摘要:Linux下飞鸽传书设计实现1.系统功能根据飞鸽传书协议在linux下实现飞鸽传输程序,并且与windows下飞鸽兼容。具体功能模块包括用户上线,下线,刷新查看在线用户,收发消息,传送文件/文件夹功能模块。2.具体实现2.1关键数据结构/*命令的结构*/typedef struct _command{int version;/*命令的版本*/int seq;/*包编号*/char srcName[100];/*发送者姓名*/char srcHost[100];/*发送者主机名*/int flag;/*命令*/char addtion[100];/*附加字段*/}command;/*在线用户信息 阅读全文
posted @ 2011-05-07 07:43 hnrainll 阅读(2678) 评论(0) 推荐(0) 编辑
摘要:Redhat Linux下tftp服务器配置其实很容易。现以RedHat 7.3为例说明。1. 如何启动tftp服务?1执行ntsysv命令,选中tftp服务,再执行service xinetd restart命令。tftp服务就启动了,容易吧。2. 如何下载文件?先分析一下tftp的配置文件。打开/etc/xinetd.d/tftp文件,如下所示:service tftp{ disable = no socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args 阅读全文
posted @ 2011-05-06 11:56 hnrainll 阅读(3381) 评论(0) 推荐(0) 编辑
摘要:/* ************************************************************************ * Filename: udpserver.c * Description: * Version: 1.0 * Created: 2011年05月05日 09时56分04秒 * Revision: none * Compiler: gcc * Author: wenhao (wh), hnrain1004@gmail.com * Company: sunplusapp * ************************************ 阅读全文
posted @ 2011-05-05 21:51 hnrainll 阅读(893) 评论(0) 推荐(0) 编辑
摘要:转自:http://www.cnblogs.com/faraway/archive/2009/03/06/1404449.html使用select函数可以以非阻塞的方式和多个socket通信。程序只是演示select函数的使用,功能非常简单,即使某个连接关闭以后也不会修改当前连接数,连接数达到最大值后会终止程序。1. 程序使用了一个数组fd_A,通信开始后把需要通信的多个socket描述符都放入此数组。2. 首先生成一个叫sock_fd的socket描述符,用于监听端口。3. 将sock_fd和数组fd_A中不为0的描述符放入select将检查的集合fdsr。4. 处理fdsr中可以接收数据的 阅读全文
posted @ 2011-05-05 20:57 hnrainll 阅读(795) 评论(0) 推荐(0) 编辑
摘要:阻塞方式block,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回。使用Select就可以完成非阻塞non-block,就是进程或线程执行此函数时不必非要等待事件的发生,一旦执行肯定返回,以返回值的不同来反映函数的执行情况,如果事件发生则与阻塞方式相同,若事件没有发生则返回一个代码来告知事件未发生,而进程或线程继续执行,所以效率较高。select能够监视我们需要监视的文件描述符的变化情况。(一)首先说明两个结构体:1:struct fd_set一个存放文件描述符(file descriptor),即文件句柄的聚合,实际上是一lon 阅读全文
posted @ 2011-05-05 19:30 hnrainll 阅读(21715) 评论(5) 推荐(4) 编辑
摘要:转自:http://blogold.chinaunix.net/u1/48325/showart_413841.html·Linux网络编程基础(一)·Linux网络编程基础(二)·Linux网络编程基础(三)• Linux网络编程一步一步学-简单客户端编写• Linux网络编程一步一步学-绑定IP和端口• Linux网络编程一步一步学-循环读取服务器上的数据• Linux网络编程一步一步学-设置非阻塞方式• Linux网络编程一步一步学-开启网络监听服务• Linux网络编程一步一步学-接受客户端连接请求• Linux网络编程一步一步学-向客户端发送消息• Li 阅读全文
posted @ 2011-05-04 21:56 hnrainll 阅读(879) 评论(0) 推荐(0) 编辑
摘要:Linux下这2个IP地址转换函数,可以在将IP地址在“点分十进制”和“整数”之间转换 而且,inet_pton和inet_ntop这2个函数能够处理ipv4和ipv6。算是比较新的函数了。 inet_pton函数原型如下[将“点分十进制” -> “整数”] #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> int inet_pton(int af, const char *src, void *dst); 这个函数转换字符串到网络地址,第一个参数af是地址族,转 阅读全文
posted @ 2011-05-04 21:44 hnrainll 阅读(5609) 评论(0) 推荐(0) 编辑
摘要:转自:http://blog.csdn.net/lovelirui/archive/2011/04/08/6309985.aspx1.套接口的地址结构确保了进程与内核之间的通讯2.套接口的地址结构中保存地址值的是二进制,inet_pton ,inet_ntop 函数用于地址的文本表达式和二进制之间的转换3.每个协议族都有自己的地址结构 以sockaddr_开头,后面加协议族后缀,网际协议族的地址结构sockaddr_in4.结构不参与通讯5.进程到内核的函数,内核到进程的函数6.字节排序函数来由:不同系统字节排序方式不一样,大端或小端,套接口地址结构中某些成员按网络字节序维护,所以需要转换ht 阅读全文
posted @ 2011-05-04 21:34 hnrainll 阅读(454) 评论(0) 推荐(0) 编辑
摘要://=============================================================// 文件名称:web.c// 功能描述:HTTP Server// 维护记录:2011-05-04 V1.0// 维护成员: wenhao//=============================================================#include <stdio.h>#include <stdlib.h>#include <string.h> // bzero#include <unistd.h 阅读全文
posted @ 2011-05-04 16:45 hnrainll 阅读(1047) 评论(0) 推荐(1) 编辑
摘要:#include <stdio.h>#include <stdlib.h>#include <windows.h>char head[]="HTTP/1.1 200 OK\r\n" \ "Content-Type: text/html\r\n"\ "\r\n";int main(){ int i,j; i = sizeof(head); printf("sizeof(head) = %d\n",i); printf("strlen(head) = %d\n", 阅读全文
posted @ 2011-05-04 15:53 hnrainll 阅读(822) 评论(0) 推荐(0) 编辑
摘要:INADDR_ANY就是指定地址为0.0.0.0的地址,这个地址事实上表示不确定地址,或“所有地址”、“任意地址”。 一般来说,在各个系统中均定义成为0值。例如MontiVista Linux中在/usr/include/netinet/in.h定义为:/* Address to accept any incoming messages.*/#define INADDR_ANY ((in_addr_t) 0x00000000)一般情况下,如果你要建立网络服务器应用程序,则你要通知服务器操作系统:请在某地址 xxx.xxx.xxx.xxx上的某端口 yyyy上进行侦听,并且把侦听到的数据包发送给 阅读全文
posted @ 2011-05-03 21:49 hnrainll 阅读(1213) 评论(0) 推荐(0) 编辑
摘要:转自:http://blogold.chinaunix.net/u/4502/showart.php?id=13488服务套和客户机的信息函数1、字节转换函数 在网络上面有着许多类型的机器,这些机器在表示数据的字节顺序是不同的, 比如i386芯片是低字节在内存地址的低端,高字节在高端,而alpha芯片却相反. 为了统一起来,在Linux下面,有专门的字节转换函数. unsigned long int htonl(unsigned long int hostlong) unsigned short int htons(unisgned short int hostshort) unsigned 阅读全文
posted @ 2011-05-03 09:04 hnrainll 阅读(551) 评论(0) 推荐(0) 编辑
摘要:转自:http://blogold.chinaunix.net/u/4502/showart.php?id=13285初等网络函数介绍(TCP)及示例程序1、socket int socket(int domain, int type,int protocol) domain:说明我们网络程序所在的主机采用的通讯协族(AF_UNIX和AF_INET等). AF_UNIX只能够用于单一的Unix系统进程间通信,而AF_INET是针对Internet的,因而可以允许在远程 主机之间通信(当我们 man socket时发现 domain可选项是 PF_*而不是AF_*,因为glibc是posix的实 阅读全文
posted @ 2011-05-03 08:57 hnrainll 阅读(1118) 评论(1) 推荐(2) 编辑

上一页 1 ··· 3 4 5 6 7