网络编程:Socket
对于Socket编程,是网络编程范畴,所有网络编程的原理都是基于这个,比如tomcat服务器,IE浏览器,等等网络应用;
这里我们定义一个Socket,不管是服务端还是客户端,都得指定端口号,客户端还得指定主机号,标识你所要访问的主机和该主机的哪个端口,比如tomcat服务器;
他走到是8080端口,http走到是80端口,还有FTP,以及邮件传输协议等等,都是走的端口,其底层都是用的Socket技术,只是对其进行了封装,添加了一些功能;
同时我们需要注意到是Socket偏向于传输层,而我们以后学到web开发,主要是应用层;
关于Socket,分为两大类;UDP和TCP,其区别是
UDP:是面向无连接的不可靠的,数据包不可大于64K,但是执行效率高,同时出错率也高,
Java中使用对UDP提供了DatagramSocket和DatagramPacket;也分为客户端和服务端,因此我们开发时两端都得指定相应的端口号,否则找不到指定的应用程序端口,
就好比不给你地址,你就会迷路;具体的应用程序是
QQ:有TCP,也有UDP;
TCP:是面向连接的,可靠的,需要三次握手确定建立连接,安全可靠,但是相应的执行效率也受到影响,一般我们下载都是用的这个TCP,
Java中提供的对象是ServerSocket和Socket,前者是服务端,后者是客户端,同样的需要指定端口,客户端还得指定主机号;
我们知道服务器是给客户端提供服务的,同一时刻有多个客户端连接,那么服务器是怎么解决这一问题的呢?
我们知道Java有多线程机制,因此我们可以使用多线程来实现,即Socket socket=serverSocket.accept();然后将这个socket传入,
将所有客户端都得执行的代码放入run方法中,即可实现多客户端的同时访问,否则单线程是致命的错误;
面向对象的思想一定要有,我们在写程序过程中,如果碰到一些经常用到的功能,或者说碰到什么问题?首先得想想Java有没有给我们提供对象来
解决这些问题?或者说有哪些开源jar包有这些功能,如果有就使用它,没有我们自己造一个,即自己创建一个;
同时对于一些共性代码,或者说经常使用到的做法,我们能否对其进行抽取封装,使我们使用时更方便快捷;
URL和URLConnection是很重要的两个类不管是3G还是web开发都得用到;
Timer可以实现自动启动某项任务;做手机开发需要用到的;
开源的工具可以实现这样的事情:quartz;这个工具貌似还蛮重要的。。。。