《Java预热班讲义.ppt》由会员分享,可在线阅读,更多相关《Java预热班讲义.ppt(14页珍藏版)》请在三一办公上搜索。
1、Java预热班培训课程,第九讲 Socket网络编程,讲师:徐文海,网络编程,网络协议IP地址与端口号有效端口:065535(尽量使用1024以上的)UDP与TCP(高级协议)Udp:用户数据包协议,面向无连接,不保证数据的可靠性,不安全,速度快。Tcp:传输控制协议,面向连接,提供可靠无差错的协议,安全,三次握手。,Socket,Socket就是网络驱动层提供给应用程序编程的接口和一种机制。通信的两端都有Socket。网络通信其实就是Socket间的通信。数据在两个Socket间通过IO传输。Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己所对应的IP和port。,
2、UDP传输,DatagramSocket与DatagramPacket建立发送端,接收端。建立数据包。调用Socket的发送接收方法。关闭Socket。发送端与接收端是两个独立的运行程序。,发送端,在发送端,要在数据包对象中明确目的地IP及端口。DatagramSocket ds=new DatagramSocket();byte by=“hello,udp”.getBytes();DatagramPacket dp=new DatagramPacket(by,0,by.length,InetAddress.getByName(“127.0.0.1”),10000);ds.send(dp);d
3、s.close();,接收端,在接收端,要指定监听的端口。DatagramSocket ds=new DatagramSocket(10000);byte by=new byte1024;DatagramPacket dp=new DatagramPacket(by,by.length);ds.receive(dp);String str=new String(dp.getData(),0,dp.getLength();System.out.println(str+-+dp.getAddress();ds.close();,UDP聊天程序,通过键盘录入获取要发送的信息。BufferedRead
4、er br=new BufferedReader(new InputStreamReader(System.in);br.readLine();将发送和接收分别封装到两个线程中。main()线程和new Thread()线程,TCP传输,Socket和ServerSocket建立客户端和服务器端建立连接后,通过Socket中的IO流进行数据的传输关闭socket同样,客户端与服务器端是两个独立的应用程序。,基本思路(客户端),客户端需要明确服务器的ip地址以及端口,这样才可以去试着建立连接,如果连接失败,会出现异常。连接成功,说明客户端与服务端建立了通道,那么通过IO流就可以进行数据的传输,而
5、Socket对象已经提供了输入流和输出流对象,通过getInputStream(),getOutputStream()获取即可。与服务端通讯结束后,关闭Socket。,基本思路(服务端),服务端需要明确它要处理的数据是从哪个端口进入的。当有客户端访问时,要明确是哪个客户端,可通过accept()获取已连接的客户端对象,并通过该对象与客户端通过IO流进行数据传输。当该客户端访问结束,关闭该客户端。,客户端,通过Socket建立对象并指定要连接的服务端主机以及端口。Socket s=new Socket(“192.168.1.1”,9999);OutputStream out=s.getOutpu
6、tStream();out.write(“hello”.getBytes();s.close();,服务端,建立服务端需要监听一个端口ServerSocket ss=new ServerSocket(9999);Socket s=ss.accept();InputStream in=s.getInputStream();byte buf=new byte1024;int num=in.read(buf);String str=new String(buf,0,num);System.out.println(s.getInetAddress().toString()+”:”+str);s.close();ss.close();,思考,对于Web服务器而言,当有多个客户端同时访问服务器时,服务端又如何提供服务呢?,TCP网络程序的工作原理,TCP客户端程序与TCP服务器端程序的交互过程:服务器端程序创建一个ServerSocket,然后调用accept方法等待客户来连接。客户端程序创建一个Socket并请求服务器端建立连接。服务器端接收客户的连接请求,并创建一个新的Socket与该客户建立专线连接。建立了连接的两个Socket在一个单独的线程(由服务器端程序创建)上对话。服务器端开始等待i新的连接请求,当新的连接请求到达时,重复上述步过程。,