- 浏览: 642957 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
lizaochengwen:
网络请求碰到的中文乱码使用encodeURL吧- (NSStr ...
iPhone开发/iPad开发 中文乱码问题 -
hhb19900618:
还是没弄懂怎么解决了中文乱码? 正确代码能重写贴出吗
iPhone开发/iPad开发 中文乱码问题 -
zhengjj_2009:
我的理解是讲ipa文件解压缩之后再重新打包,已经破坏了签名,所 ...
xcodebuild和xcrun实现自动打包iOS应用程序 -
zhengjj_2009:
我参考你的“ 从ipa格式的母包生成其它渠道包的shell脚本 ...
xcodebuild和xcrun实现自动打包iOS应用程序 -
同一片天空:
问题果然解决了
iOS 搭建 XMPP实现环境
网络编程,从某种程度上说就是进程间通信,套接口类似于进程的ID,通过IP地址指定通信的主机,通过端口号指定和主机上的那个进程通信,也就是通过IP+端口号唯一确定了通信的进程。
通用套接口结构
结构:
struct sockaddr{
uint8_t sa_len;//数据长度
sa_family sa_family;//协议名
char sa_data[14];//14位的协议地址
}
头文件:sys/socket.h
说明:通用套接字接口结构
Posix.lg中数据类型
数据类型 说明 头文件
int8_t 带符号的8位整数 sys/types.h
uint8_t 无符号的8位整数 sys/types.h
int16_t 带符号的16位整数 sys/types.h
uint16_t 无符号的16位整数 sys/types.h
int32_t 带符号的32位整数 sys/types.h
uint32_t 无符号的32位整数 sys/types.h
sa_family_t 套接口地址结构的地址簇 sys/socket.h
socklen_t 套接口地址的长度,一般为uint32_t sys/socket.h
in_port_t TCP或UDP端口,一般为uint16_t netinet/in.h
in_addr_t Ipv4地址,一般为uint32_t netinet/in.h
IPv4套接口地址数据结构
结构:
struct sockaddr_in {
short int sin_family; //IPV4协议为AF_INET
unsigned short int sin_port;//16位端口号,网络字节序列
struct in_addr sin_addr; //
unsigned char sin_zero[8]; //备用域,为了和struct sockaddr字
//节数保持相同;
};
struct in_addr{
in_addr_t s_addr;//32位IP地址,网络字节序列
} ;
头文件:neitnet/in.h
说明:略
常用函数
字节排序函数
计算机内存中有两种数据存储方式,一种为小端字节序,也就是低地址存储数据低字节,高地址存储数据高字节;一种为大端字节序,也就是低地址存储高字节,高地址存储低字节。网络字节序采用大端字节序,而主机字节序有可能为小端字节序,因此,存在着字节序的转换问题。
函数:
uint16_t htons(uint16_t hostvalue);
uint32_t htonl(uint32_t hostvalue);
uint16_t ntohs(uint16_t netvalue);
uint32_t ntohl(uint32_t netvalue);
头文件:netinet/in.h
说明:函数中h表示host,n表示network,s表示short,l表示long,一般而言,使用htonshentohs转换端口号,htonl和ntohl转换IP地址。
字节操作函数
字节操作函数主要是用于读取结构体中的某几个字节。
函数:
void bzero(void *dest,size_t nbytes);
void bcopy(const void *src,void *dest,size_t nbytes);
int bcmp(const void *prt1,const void *ptr2,size_t nbytes);
void *memset(void *dest,int c,size_t len);
void *memcpy(void *dest,const void *src,size_t nbytes);
int memcmp(const void *ptr1,const void ptr2,size_t nbytes);
头文件:string.h
说明:以b打头的函数为支持套接口函数的系统所提供,mem为支持ANSI C库提供的函数;其中,bzero将制定的起始地址设置为0(nbytes表示字长),bcopy和memcpy为复制,bcmp和memcmp为比较,memset将目标中指定数据的字节设置为指定的值。
地址转换函数
在TCP/IP的网络上,使用ASCII地址,也就是使用“.”隔开的4个十进制数表示,但在套接字中使用32位网络字节序,因此必须进行地址转换。
函数: in_addr_t inet_addr(const char *straddr);
int inet_aton(const char* straddr,struct in_addr *addrp);
char* inet_ntoa(struct in_addr inaddr);
头文件:sys/socket.h netinet/in.h arpa/inet.h
说明:
inet_addr成功返回32位网络字节序地址,出错返回INADDR_NONE。INADDR_NONE为linux定义的一个常数,是一个不存在的ip地址;
inet_aton将ASCII转换成网络字节序的32位二进制值,输入的ASCII放在straddr中,转换后放在addrp中,成功返回1,失败返回0;
inet_ntoa将32位二进制地址转换成ASCII地址,成功返回ASCII值,失败返回NULL。
字节流读取函数
仍然为read和write函数,和文件I/O不同在于其读取的字节数可能比要求的少,但不是读取错误。
创建套接口函数
函数:int socket(int family,int type,int protocol);
头文件:sys/socket.h
说明:创建一个套接口描述字,也就是套接字,返回值大于等于0,表示成功,否则表示失败,protocol一般为0,其中family的取值如下:
AF_LOCAL UNIX协议簇 AF_ROUTE 路由套接口
AF_INET IPv4协议 AF_INET6 IPv6协议
AF_KEY 密钥套接口
type的取值如下:
SOCK_STREAM TCP套接口 SOCK_DGRAM UDP套接口
SOCK_PACKET 支持数据链路访问 SOCK_RAW 原始套接口
套接口绑定函数
函数:int bind(int sockd,const struct sockaddr *myaddr,socklen_t addrlen)
头文件:sys/socket.h
说明:成功返回值为0,失败返回-1,并设置errno值。该函数的调用不是必须的,只有需要和固定的某个特定网络地址和端口通信时才会使用到,一般而言调用connect和listen函数时,linux内核会自动分配一个地址和端口号。该函数的调用,对于服务器端而言,myaddr必须为从该地址接受客户信息的地址,对于客户端而言,myaddr指定了套接口的源地址。对于端口号,可以任意指定,但是不能为系统保留端口。此外,bind允许内核指定地址,当套接口设定port为0时,表示有内核指定端口号,设置sin_addr为INADDR_ANY时,有内核指定IP地址,
套接口链接函数(客户端使用)
函数:int connect(int sockfd,const struct sockaddr *myaddr,socklen_t addrlen)
头文件:sys/socket.h sys/types.h
说明:链接成功返回0,失败返回-1,并设置errno的值
套接口监听函数(服务器端使用)
函数:(1)int listen(int sockfd,int backlog);
(2)int accept(int sockfd,const struct sockaddr *myaddr,socklen_t *addrlen)
头文件:sys/socket.h
说明:
listen用来监听,其中backlog表示内核为此套接口设定的接受客户端请求的最大连接数。成功返回0,失败返回-1,并设置errno的值。
accept主要用来处理各个连接,其功能为从已经完成的来你接队列的队头返回下一个已完成连接,如果已完成连接队列为空,则进程休眠。返回非负描述字表示成功,出错返回-1。成功时,返回值用来标识新建立的链接。其与参数sockfd的区别在于,监听套接口描述字只有一个,而且一直存在,而函数返回值表示已连接的套接口描述字,当连接断开时就关闭该描述字,如果不需要客户端的地址和端口信息,可以将第二个和第三个参数设置为空指针。
获取本地或远程协议地址
函数:
(1) getsockname(int sockfd,struct sockaddr *localaddr,socklen_t *addrlen);
(2) getpeername(int sockfd,struct sockaddr *peeraddr,socklen_t *addrlen);
头文件:sys/socket.h
说明:(1)返回本地协议地址,(2)返回远程协议地址
当不调用bind或调用bind没有指定本地IP地址和端口时,可以调用函数getsockname来返回内核分配的本地IP地址和端口号,还可以获取到套接口的协议簇。当一个新的连接建立时,服务器端也可以调用getsockname来获取分配给此连接的本地IP地址;当服务器端的一个子进程调用函数exec启动执行时,只能调用getpeername来获取客户端IP地址和端口号。
名字地址转换成数字地址
函数:struct hostent *gethostbyname(const char *hastname);
头文件:netdb.h
说明:函数返回成功返回hostent指针,失败返回空指针,并设置h_errno的值。其中hostent的结构如下:
struct hostent{
char *h_name;//主机的规范化名字;
char **h_aliases;//足迹的别名列表;
char h_addrtype;//返回主机地址类型(ipv4,ipv6)
char h_length;//返回地址长度(以字节为单位)
char **h_addr_list;// 主机的一组网络地址列表,使用网络字节序
};
数字地址转化成名字地址
函数:struct hostent *gethostbyaddr(const void *addr,socklet_t len,int type);
头文件:netdb.h
说明:addr为一个含有地址结构(in_addr或in_addr6)的指针,len为该结构的大小,IPV4为4,IPV6为6,type为协议簇。
获取当前主机名字
函数:uname(struct utsname *name);
头文件:sys/utsname.h
说明:返回当前主机的名字,常和gethostbyname一起使用来确定本地主机的IP地址。返回值大于等于0为成功,如果为-1表示失败。Struct ustname结构如下:
struct utsname{
char sysname[];
char nodename[];
char release[];
char version[];
char machine[];
#ifdef _GUN_SOURCE
char domainname[];
#endif
};
服务器名转换成端口号
函数:struct servent *getservbyname(const char *name,const char *proto);
头文件:netdb.h
说明:实现将服务器名转换成端口号的功能,返回非空指针表示成功,否则为失败,serv为服务器名,proto为协议名,可以为空,其中servent定义如下:
struct servent{
char *s_name;//规范服务器名
char *s_aliases;//别名成员列表
int s_port;//端口号
char *s_proto;//函数调用时指定的协议名
}
端口号转换成服务器名
函数:struct servant *getservbyport(int port,const char* proto);
头文件:netdb.h
说明:实现从端口号到服务器名的转换,返回结果为空指针表示成功,否则失败,port为网络字节序,proto为协议名。
原文:http://blog.csdn.net/xiaoweibeibei/article/details/6584250
通用套接口结构
结构:
struct sockaddr{
uint8_t sa_len;//数据长度
sa_family sa_family;//协议名
char sa_data[14];//14位的协议地址
}
头文件:sys/socket.h
说明:通用套接字接口结构
Posix.lg中数据类型
数据类型 说明 头文件
int8_t 带符号的8位整数 sys/types.h
uint8_t 无符号的8位整数 sys/types.h
int16_t 带符号的16位整数 sys/types.h
uint16_t 无符号的16位整数 sys/types.h
int32_t 带符号的32位整数 sys/types.h
uint32_t 无符号的32位整数 sys/types.h
sa_family_t 套接口地址结构的地址簇 sys/socket.h
socklen_t 套接口地址的长度,一般为uint32_t sys/socket.h
in_port_t TCP或UDP端口,一般为uint16_t netinet/in.h
in_addr_t Ipv4地址,一般为uint32_t netinet/in.h
IPv4套接口地址数据结构
结构:
struct sockaddr_in {
short int sin_family; //IPV4协议为AF_INET
unsigned short int sin_port;//16位端口号,网络字节序列
struct in_addr sin_addr; //
unsigned char sin_zero[8]; //备用域,为了和struct sockaddr字
//节数保持相同;
};
struct in_addr{
in_addr_t s_addr;//32位IP地址,网络字节序列
} ;
头文件:neitnet/in.h
说明:略
常用函数
字节排序函数
计算机内存中有两种数据存储方式,一种为小端字节序,也就是低地址存储数据低字节,高地址存储数据高字节;一种为大端字节序,也就是低地址存储高字节,高地址存储低字节。网络字节序采用大端字节序,而主机字节序有可能为小端字节序,因此,存在着字节序的转换问题。
函数:
uint16_t htons(uint16_t hostvalue);
uint32_t htonl(uint32_t hostvalue);
uint16_t ntohs(uint16_t netvalue);
uint32_t ntohl(uint32_t netvalue);
头文件:netinet/in.h
说明:函数中h表示host,n表示network,s表示short,l表示long,一般而言,使用htonshentohs转换端口号,htonl和ntohl转换IP地址。
字节操作函数
字节操作函数主要是用于读取结构体中的某几个字节。
函数:
void bzero(void *dest,size_t nbytes);
void bcopy(const void *src,void *dest,size_t nbytes);
int bcmp(const void *prt1,const void *ptr2,size_t nbytes);
void *memset(void *dest,int c,size_t len);
void *memcpy(void *dest,const void *src,size_t nbytes);
int memcmp(const void *ptr1,const void ptr2,size_t nbytes);
头文件:string.h
说明:以b打头的函数为支持套接口函数的系统所提供,mem为支持ANSI C库提供的函数;其中,bzero将制定的起始地址设置为0(nbytes表示字长),bcopy和memcpy为复制,bcmp和memcmp为比较,memset将目标中指定数据的字节设置为指定的值。
地址转换函数
在TCP/IP的网络上,使用ASCII地址,也就是使用“.”隔开的4个十进制数表示,但在套接字中使用32位网络字节序,因此必须进行地址转换。
函数: in_addr_t inet_addr(const char *straddr);
int inet_aton(const char* straddr,struct in_addr *addrp);
char* inet_ntoa(struct in_addr inaddr);
头文件:sys/socket.h netinet/in.h arpa/inet.h
说明:
inet_addr成功返回32位网络字节序地址,出错返回INADDR_NONE。INADDR_NONE为linux定义的一个常数,是一个不存在的ip地址;
inet_aton将ASCII转换成网络字节序的32位二进制值,输入的ASCII放在straddr中,转换后放在addrp中,成功返回1,失败返回0;
inet_ntoa将32位二进制地址转换成ASCII地址,成功返回ASCII值,失败返回NULL。
字节流读取函数
仍然为read和write函数,和文件I/O不同在于其读取的字节数可能比要求的少,但不是读取错误。
创建套接口函数
函数:int socket(int family,int type,int protocol);
头文件:sys/socket.h
说明:创建一个套接口描述字,也就是套接字,返回值大于等于0,表示成功,否则表示失败,protocol一般为0,其中family的取值如下:
AF_LOCAL UNIX协议簇 AF_ROUTE 路由套接口
AF_INET IPv4协议 AF_INET6 IPv6协议
AF_KEY 密钥套接口
type的取值如下:
SOCK_STREAM TCP套接口 SOCK_DGRAM UDP套接口
SOCK_PACKET 支持数据链路访问 SOCK_RAW 原始套接口
套接口绑定函数
函数:int bind(int sockd,const struct sockaddr *myaddr,socklen_t addrlen)
头文件:sys/socket.h
说明:成功返回值为0,失败返回-1,并设置errno值。该函数的调用不是必须的,只有需要和固定的某个特定网络地址和端口通信时才会使用到,一般而言调用connect和listen函数时,linux内核会自动分配一个地址和端口号。该函数的调用,对于服务器端而言,myaddr必须为从该地址接受客户信息的地址,对于客户端而言,myaddr指定了套接口的源地址。对于端口号,可以任意指定,但是不能为系统保留端口。此外,bind允许内核指定地址,当套接口设定port为0时,表示有内核指定端口号,设置sin_addr为INADDR_ANY时,有内核指定IP地址,
套接口链接函数(客户端使用)
函数:int connect(int sockfd,const struct sockaddr *myaddr,socklen_t addrlen)
头文件:sys/socket.h sys/types.h
说明:链接成功返回0,失败返回-1,并设置errno的值
套接口监听函数(服务器端使用)
函数:(1)int listen(int sockfd,int backlog);
(2)int accept(int sockfd,const struct sockaddr *myaddr,socklen_t *addrlen)
头文件:sys/socket.h
说明:
listen用来监听,其中backlog表示内核为此套接口设定的接受客户端请求的最大连接数。成功返回0,失败返回-1,并设置errno的值。
accept主要用来处理各个连接,其功能为从已经完成的来你接队列的队头返回下一个已完成连接,如果已完成连接队列为空,则进程休眠。返回非负描述字表示成功,出错返回-1。成功时,返回值用来标识新建立的链接。其与参数sockfd的区别在于,监听套接口描述字只有一个,而且一直存在,而函数返回值表示已连接的套接口描述字,当连接断开时就关闭该描述字,如果不需要客户端的地址和端口信息,可以将第二个和第三个参数设置为空指针。
获取本地或远程协议地址
函数:
(1) getsockname(int sockfd,struct sockaddr *localaddr,socklen_t *addrlen);
(2) getpeername(int sockfd,struct sockaddr *peeraddr,socklen_t *addrlen);
头文件:sys/socket.h
说明:(1)返回本地协议地址,(2)返回远程协议地址
当不调用bind或调用bind没有指定本地IP地址和端口时,可以调用函数getsockname来返回内核分配的本地IP地址和端口号,还可以获取到套接口的协议簇。当一个新的连接建立时,服务器端也可以调用getsockname来获取分配给此连接的本地IP地址;当服务器端的一个子进程调用函数exec启动执行时,只能调用getpeername来获取客户端IP地址和端口号。
名字地址转换成数字地址
函数:struct hostent *gethostbyname(const char *hastname);
头文件:netdb.h
说明:函数返回成功返回hostent指针,失败返回空指针,并设置h_errno的值。其中hostent的结构如下:
struct hostent{
char *h_name;//主机的规范化名字;
char **h_aliases;//足迹的别名列表;
char h_addrtype;//返回主机地址类型(ipv4,ipv6)
char h_length;//返回地址长度(以字节为单位)
char **h_addr_list;// 主机的一组网络地址列表,使用网络字节序
};
数字地址转化成名字地址
函数:struct hostent *gethostbyaddr(const void *addr,socklet_t len,int type);
头文件:netdb.h
说明:addr为一个含有地址结构(in_addr或in_addr6)的指针,len为该结构的大小,IPV4为4,IPV6为6,type为协议簇。
获取当前主机名字
函数:uname(struct utsname *name);
头文件:sys/utsname.h
说明:返回当前主机的名字,常和gethostbyname一起使用来确定本地主机的IP地址。返回值大于等于0为成功,如果为-1表示失败。Struct ustname结构如下:
struct utsname{
char sysname[];
char nodename[];
char release[];
char version[];
char machine[];
#ifdef _GUN_SOURCE
char domainname[];
#endif
};
服务器名转换成端口号
函数:struct servent *getservbyname(const char *name,const char *proto);
头文件:netdb.h
说明:实现将服务器名转换成端口号的功能,返回非空指针表示成功,否则为失败,serv为服务器名,proto为协议名,可以为空,其中servent定义如下:
struct servent{
char *s_name;//规范服务器名
char *s_aliases;//别名成员列表
int s_port;//端口号
char *s_proto;//函数调用时指定的协议名
}
端口号转换成服务器名
函数:struct servant *getservbyport(int port,const char* proto);
头文件:netdb.h
说明:实现从端口号到服务器名的转换,返回结果为空指针表示成功,否则失败,port为网络字节序,proto为协议名。
原文:http://blog.csdn.net/xiaoweibeibei/article/details/6584250
发表评论
-
SOCK_STREAM和SOCK_DGRAM
2015-07-23 20:08 1565sock_stream 是有保障的(即能保证数据正确传送到 ... -
SOCKET bind INADDR_LOOPBACK和INADDR_ANY的区别
2015-07-23 19:49 2002今天写程序时候,服务器端启动了,然后客户端总是连接不上,con ... -
htons()
2015-07-23 19:26 528在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺 ... -
使用symbolicatecrash分析crash文件
2015-03-10 11:32 1116原文 http://www.cnblogs.com/ning ... -
程序设计中的计算复用(Computational Reuse)
2015-02-10 10:18 607从斐波那契数列说起 ... -
didReceiveMemoryWarning
2015-02-09 16:11 484IPhone下每个app可用的内存是被限制的,如果一个app使 ... -
iOS开发中怎么响应内存警告
2015-02-09 16:08 603好的应用应该在系统内存警告情况下释放一些可以重新创建的资源。在 ... -
ASIHTTPRequest多次重复请求的问题
2014-12-17 14:34 588在一个车票订购的项目中,点击一次订购,却生成了2次订单,通过抓 ... -
从 CloudKit 看 BaaS 服务的趋势
2014-09-26 11:51 689从 6 月份 WWDC 苹果发布 ... -
ios编程--AVCapture编程理解
2014-09-26 11:03 8700、媒体采集的几个东西。这里所需要明白的是,在这个流程中,这里 ... -
NSURLProtocol
2014-09-25 10:42 7561、http://nshipster.com/nsurlpro ... -
关于iOS8的extension插件
2014-09-25 10:41 1215关于iOS8的extension插件,有兴趣的同学可以参考一下 ... -
【转】ios app在itunesConnect里面的几种状态
2014-08-05 10:34 1089Waiting for Upload (Yellow) Ap ... -
[转]iOS Dev (45) iOS图标与切片处理工具Prepo
2014-02-07 17:02 986iOS Dev (45) iOS图标与切片处理工具Prepo ... -
phoneGap开发IOS,JS调用IOS方法/phoneGap插件开发
2014-01-13 17:49 1202前沿 废话不说phoneGap是什么不多介绍,官方网站: h ... -
如何在IOS平台下搭建PhoneGap开发环境(PhoneGap2.5)
2014-01-13 15:23 699由于在下最近在做基于HTML5的跨平台移植,搭建环境的时候着实 ... -
xcode 4 制作静态库详解
2013-12-20 18:27 481最近在做Apple的IOS开发,有开发静态库的需求,本身IOS ... -
【翻译】ios教程-创建静态库
2013-12-20 18:19 3005作者:shede333 主页:htt ... -
封装自己的控件库:iPhone静态库的应用
2013-12-20 17:03 510由于iPhone 控件的极度匮乏和自定义组件在重用上的限制,在 ... -
iphone:使用NSFileManager取得目录下所有文件(遍历所有文件)
2013-11-18 17:56 823From:http://note.sdo.com/u/xiao ...
相关推荐
在本实验中,将学习Python中TCP连接的套接字编程的基础知识:如何创建套接字,将其绑定到特定的地址和端口,以及发送和接收HTTP数据包。你还将学习一些HTTP首部格式的基础知识。 你将开发一个处理一个HTTP请求的Web...
熟悉基于Python进行UDP套接字编程的基础知识,掌握使用UDP套接字发送和接收数据包,以及设置正确的套接字超时,了解Ping应用程序的基本概念,并理解其在简单判断网络状态,例如计算数据包丢失率等统计数据方面的意义...
网络套接字编程\计算机网络基础\套接字概述\套接字函数\MFC套接字编程
基于基础的网络套接字编程,简单的服务端发送倒计时间,客户端接收,与服务端同步
Socket即套接字 java.net包的客户端Socket,服务端ServerSocket; 单线程套接字客户端和服务端的处理; 服务端多线程处理客户端套接字; 带有线程池处理客户端套接字; 不会Socket,有Java基础就能完全理解Socket...
用Python实现基于UDP协议的套接字,分为服务端和客户端源码,两者可以通过套接字进行收发消息。
PPT内容是基于《Python网络编程基础》这本教材,但是去粗取精,可以作为期末考试复习的资料,而且第二章是网络编程最重要的一章——套接字通信,里面有学习视频的链接。
在Windows操作系统中,线程是指系统中最小的功能执行单元,其可以独立的完成某一项功能。所以在进行Windows编程中,如果用户使用多线程处理某个功能...在本章中,将向用户介绍使用多线程处理异步套接字编程的相关方法。
关于socket套接字的编程视频,内容详细,非常适合新手学习,还在等什么呢,快来观看吧。
01: 网络编程基础 tcp协议、udp协议 tcp套接字编程.pptx
在前三个实验的基础上,将其改造为一个能传输指定文件名称的点对点文件传输软件 设计并实现一个支持多个客户端的文件传输服务器 客户端等待键盘输入文件名称,然后将文件名称传输给服务器,服务器在预先设置好的...
1、利用数据报套接字编写回射服务器和客户端。 2、使用类的形式封装服务器和客户端的网络功能框架,提高程序的适用性。 3、在编程框架的基础上扩展程序功能,测试网络丢包率。
网络编程基础1:套接字和地址
《Visual C++网络编程经典案例详解》内容包括网络编程基础知识、Socket套接字编程基础、多线程技术、FTP浏览器实例程序、网页浏览器实例程序、网络通信器、邮件收发器、实用播放器、网络文件传输器、P2P网络播放器、...
Java套接字实现网络编程之基础篇.doc
第四章 套接字编程:copyright: 电子科技大学信息与软件工程学院计算机网络课程组, 2020学习目的学习目的1. 掌握字节序、内存对齐等计算机网络编程相关基础知识2. 理解
MFC套接字编程(服务端+客户端),大学作业,已测,可用。有助于初学者学习,并在此基础上进行改进。能够显示从客户端接收到的信息及服务端自己发送的消息。
③linux网络编程学习:tcp编程、udp编程(socket套接字编程); ④linux-shell编程学习; 资源几乎包含了博主的整个linux学习的资料,是根据网络课程、网络资料、自写程序、书籍资料等渠道收集整理的,希望对大家有所...
利用Java套接字实现网络编程之基础篇
由四个CHM组成: Socket套接字—Java套接字编程 基础知识—Java的网络功能与编程 网络协议—Java网络编程之传输控制协议 相关API—Java Transaction API概述