预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共27页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

LINUXC编程套接字与网络编程专门用 于为用 户提供 应用服 务(ftp, telnet, Smtp..)‏ 网络协议中一些术语Linux中的TCP/IP网络结构Socket编程Socket编程相关的数据结构1Socket编程Internet通信域套接字地址结构sockaddr_instructsockaddr_in{shortintsin_family;//地址族unsignedshortintsin_port;//端口号structin_addrsin_addr;//IP地址charsin_zero[8];//填充0以保持与structsockaddr同样大小,这样一个指向sockaddr_in数据结构的指针可以强行转换为一个指向数据结构sockaddr的指针。 }//端口号以及Internet地址使用的是网络字节顺序,需要通过特殊函数进行转换Socket编程获取服务器和客户端主机信息获取服务器和客户端主机信息获取服务器和客户端主机信息获取服务器和客户端主机信息Socket编程#include<sys/socket.h> #include<sys/types.h> intsocket(intdomain,inttype,intprotocol)‏ 函数说明:创建一个套接字描述符,如果失败返回-1. domain为地址族AF_XXX,type为套接字类型,SOCK_STREAM(TCP),SOCK_DGRAM(UDP),SOCK_RAW(IP、ICMP); protocol指定协议0为自动选择。#include<sys/types.h> #include<sys/socket.h> intbind(intsockfd,structsockaddr*my_addr,intaddrlen); 函数说明:成功返回0,如果失败返回-1 sockfd:由socket()调用返回的文件描述符 myaddr:指向sockaddr的指针,由于系统兼容性问题,一般 使用structsockaddr_in代替。 addrlen:sockaddr结构的长度Socket编程在套接字被绑定到地址后,进程通过调用listen(),来告诉系统它愿意让其它进程与该套接字建立连接。intaccept(intsockfd,structsockaddr*addr,int*addrlen)‏ Sockfd:是listen后的文件描述符 Addr:将被client的ipaddress填充 Addrlen:将被client的ipaddress的长度填充 成功则返回client的socket文件描述符,之后的数据传输就可以使用新的文件描述符。Socket编程用于建立连接后完成发送与接收数据的系统调用(数据流套接字)‏可以使用close(intsockfd)和shutdown(intsock,inthow)来关闭 连接的套接字文件描述符listenfd=socket(...); bind(listenfd,...); listen(listenfd,...); while(1) { connfd=accept(listenfd,...); n=fork(); if(n==-1) { perror("calltofork"); exit(1); } elseif(n==0) { close(listenfd); while(1){ read(connfd,...); write(connfd,...); } close(connfd);exit(0); } else close(connfd); }基于UDP的c/s模式用于无连接发送与接收数据的系统调用(用于数据报套接字)‏此课件下载可自行编辑修改,供参考! 感谢您的支持,我们努力做得更好!