1 / 24
文档名称:

网络编程复习.doc

格式:doc   页数:24页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

网络编程复习.doc

上传人:xxj165868 2015/5/20 文件大小:0 KB

下载得到文件列表

网络编程复习.doc

相关文档

文档介绍

文档介绍:Socket (套接字, 英文原意电源插座)
socket的初衷是一个庞大的体系,TCP/IP只是这个庞大体系下一个很小的子集,而我们真正能用上的更是这个子集中的一小部分:运输层(Host-to-Host Transport Layer)的TCP和UDP协议,以及使用这两个协议进行应用层(Application Layer)的开发。
即使是socket的核心部分,网络层( Layer)的IP协议,在编程的时候我们也很少会感觉到它的存在——因为已经被封装好了,我们唯一需要做的事情就是传入一个宏。
数据传输的顺序是:
链路层--网络层--运输层--应用层
建模代码:
class TcpServer
{
private :
int listenSock;
municationSock;
sockaddr_in servAddr;
sockaddr_in clntAddr;
public :
TcpServer( int listen_port);
bool ept();
void handleEcho();
};
sock实际上就是socket,addr就是address。serv和clnt是server和client。还有一个 socket中的结构体sockaddr_in, 表示:socket address (网络嵌套字地址)。


#include<>
常用的3个已经打开的fd,0:标准输入(stdin);1:标准输出(stdout);2:标准错误(stderr)。
注意:file和fd并非一定是一一对应的。当一个file被多个程序调用的时候,会生成相互独立的fd。

文件是应用程序与系统(包括特定硬件设备)之间的桥梁,而文件描述符就是应用程序使用这个“桥梁”的接口。在需要的时候,应用程序会向系统申请一个文件,然后将文件的描述符返回供程序使用。返回socket的文件通常被创建在/tmp或者/usr/tmp中。


socket的通用address描述结构sockaddr:
struct sockaddr
{
unsigned short sa_family;
char sa_data[ 14 ];
};
这是一个16字节大小的结构(2+14)(不考虑内存对齐?),sa_family可以认为是socket address family的缩写,也可能被简写成AF(Address Family),当我们指定sa_family= (地址)。之后,sa_data的形式也就被固定了下来:最前端的2字节用于记录16位的端口,紧接着的4字节用于记录32位的IP地址,最后的8字节清空为零。
我们实际在构造sockaddr时候用到的结构sockaddr_in(意指socket address ):
struct sockaddr_in
{
unsigned short sin_family;
unsigned short sin_port;
struct in_addr sin_addr;
char sin_zero[ 8 ];
};
sin_addr被定义成了一个结构,这个结构实际上就是:
struct in_addr
{
unsigned long s_addr;
};
头文件依赖关系:
#include <>
int listenSock;
municationSock;
sockaddr_in servAddr;
sockaddr_in clntAddr;
现在来写这个类的构造函数:
TcpServer::TcpServer( int listen_port)
{
if ( (listenSock = socket(, SOCK_STREAM, IPPROTO_TCP)) < 0 ) {
throw " socket() failed " ;
}
memset( & servAddr, 0 , sizeof (servAddr));
= ;
= htonl(INADDR_ANY);
= htons(listen_port);
if ( bind(listenSock, (sockaddr * ) & servAddr, sizeof (servAddr)) < 0 ) {
throw " bind() failed