线程的同步 由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题.Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问. 由于我们可以通过 private 关键字来保证数据对象只能被方法访问,所以我们只需针对方法提出一套机制,这套机制就是 synchronized 关键字,它包括两种用法:synchronized 方法和 synchronized 块. 1. synchronized 方法:通过在方法声明中加入 synch
一.系统调用和应用编程接口 在讨论网络通信之前, 首先明确两个概念:系统调用(system call) 和 应用编程接口(Application Programming Interface,API). 操作系统使用 系统调用 机制来实现 在应用程序 与 操作系统 之间进行控制权传递. 当某个应用进程启动了系统调用时,控制权就从应用程序传递给操作系统.操作系统执行某个内部过程之后,把控制权返回给应用程序. 对程序员来说,每一个系统调用和一般程序设计中的函数调用非常相似,只是系统调用是将控制权传递给
TCP/IP协议中SIGPIPE信号产生原因 1.假设客户端socket套接字close(),会给服务器发送字节段FIN: 2.服务器接收到FIN,但是没有调用close(),因为socket有缓存区,所以服务器仍然可以向客户端发送数据. 3.如果这种状态下服务器向客户端发送数据,将会引起TCP/IP协议进行RST段重置,导致服务器向当前进程发送SIGPIPE信号, SIGPIPE信号的默认动作是关闭当前进程. 所以在网络编程中必须要捕捉SIGPIPE信号,因为不确定哪个端会突然close().
在客户/服务器通信模式中,服务器端需要创建监听特定端口的ServerSocket,ServerSocket负责接收客户连接请求. 构造ServerSocket ServerSocket的构造方法有以下几种重载形式: ◆ServerSocket()throws IOException ◆ServerSocket(int port) throws IOException ◆ServerSocket(int port, int backlog) throws IOException ◆ServerSo
IPv4套接字地址结构 struct sockaddr_in { uint8_t sinlen;(4个字节) sa_family_t sin_family;(4个字节) in_port_t sin_port;(2个字节) struct in_addr sin_addr;(4个字节) char sin_zero[8]; }; sin_len:整个sockaddr_in结构体的长度,部分Linux内核版本没有该成员 sin_family:指定该地址家族,一般设置为AF_INET(使用TCP,UDP协
select int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout); 参数nfds:readfds集合内文件描述符的最大值(文件描述符的值)加1 参数readfds:用户关心的读文件描述符集合 返回值:如果成功,返回所有sets(所有即readfds,writefds,exceptfds)中描述符的个数,如果超时,返回0,如果出错,返回-1 fd_set
TCP/IP协议三次握手机制 TCP/IP是全双工通道,两端都可以读写,三次握手机制就是验证TCP/IP是否是全双工通道 1.客户端调用connect()函数,阻塞客户端进程,客户端向服务器发送数据包SYN,包SYN的值是a,客户端状态置为SYN_SENT,表示向服务器发送验证 2.服务器在调用listen()函数后,将socket套接字变成被动套接字,然后服务器端在accept()函数处阻塞,此时服务器端状态是SYN_RCVD,表示等待客户端发送SYN包.当服务器接收到客户端的SYN的数据包之
<精通JPA与Hibernate:Java对象持久化技术详解>这本书写完,就开始着手写<Java网络编程核心技术详解>一书,已经写了一大半,内容包括:Java网络编程的基础知识. 套接字编程.非阻塞通信.创建HTTP服务器与客户程序.数据报通信.对象的序列化与反序列化.Java反射机制.RMI框架.JDBC API.JavaMail API.MVC设计模式.XML处理.安全网络通信.CORBA和Web服务. 每写一章,都会遇到一些挑战,主要是在调试程序时,没有出现预期的结果.例如分
转载:http://www.blogjava.net/landon/archive/2013/07/24/401911.html Java网络编程精解笔记3:ServerSocket详解ServerSocket用法详解 1.C/S模式中,Server需要创建特定端口的ServerSocket.->其负责接收client连接请求. 2.线程池->包括一个工作队列和若干工作线程->工作线程不断的从工作队列中取出任务并执行.-->java.util.concurrent->线程池