JAVA高级05--网络编程--要点总结
2011-03-13 11:31
501 查看
JAVA高级05_网络编程
1.IP地址和Port(端口号)
本地回路的IP地址:127.0.0.1,特殊IP地址,不经过网卡。没有和网卡绑定。
Port两个字节,不同的应用程序使用不同的端口进行通信。0—65535,0—1023之间的端口数是用于一些知名的网络服务和应用。发送数据包时必须指明端口号。
2.Socket是网络驱动层提供给应用程序编程的接口和一种机制。Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己所对应的IP和Port。
3.网络数据的收发都是最终经过驱动程序(网卡)来完成的。
4.DatagramSocket类用于UDP通信。ServerSocket类用于TCP通信的服务器端。Socket类用于TCP通信的服务器和客户端。
5.如果计算机只有一个IP地址,通常就不会去指定IP地址,直接使用系统默认。而如果计算机有多个IP地址,就应该指定确定的IP地址。
6.如果把DatagramSocket比作创建港口的码头,那么DatagramPacket就是发送和接受数据的集装箱。
7.InetAddress是用于表示计算机IP地址的一个类。
8.在命令行中通过输入start命令可以重新打开一个窗口,而且此窗口的设置将和原窗口保持一致,包括光标位置和classpath等。
9.UDP编程实践:
13.私有IP通过网关代理上网的原理,端口映射表。私有IP的某个端口通过映射表和网关的某个端口对应,然后又网关和外部网通信。端口映射表是动态的,只有私有IP先向外发送数据,才会临时建立这个映射表。
14.TCP客户端程序与TCP服务端程序的交互过程:1.服务器程序创建一个serversocket,调用accept方法等待客户来连接。2.客户端程序创建一个socket并请求与服务器连接。3.服务器接收请求并建立一个新的socket和该客户建立专线连接。4.建立了连接的两个socket在一个单独的线程(由服务器程序创建)上对话。5.服务器开始等待新的连接请求,当新的连接请求到达时,重复步骤2和步骤5的过程。相当于114总机台接受客户打电话的情况一样。
15.在Dos窗口下输入telnet,可以调用windows系统自带的客户端,命令格式是“telnet IP地址 Port”,从而可以和服务器程序进行通信。
16.编写TCP服务器端程序,利用telent和服务器之间进行通信。
1.IP地址和Port(端口号)
本地回路的IP地址:127.0.0.1,特殊IP地址,不经过网卡。没有和网卡绑定。
Port两个字节,不同的应用程序使用不同的端口进行通信。0—65535,0—1023之间的端口数是用于一些知名的网络服务和应用。发送数据包时必须指明端口号。
2.Socket是网络驱动层提供给应用程序编程的接口和一种机制。Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己所对应的IP和Port。
3.网络数据的收发都是最终经过驱动程序(网卡)来完成的。
4.DatagramSocket类用于UDP通信。ServerSocket类用于TCP通信的服务器端。Socket类用于TCP通信的服务器和客户端。
5.如果计算机只有一个IP地址,通常就不会去指定IP地址,直接使用系统默认。而如果计算机有多个IP地址,就应该指定确定的IP地址。
6.如果把DatagramSocket比作创建港口的码头,那么DatagramPacket就是发送和接受数据的集装箱。
7.InetAddress是用于表示计算机IP地址的一个类。
8.在命令行中通过输入start命令可以重新打开一个窗口,而且此窗口的设置将和原窗口保持一致,包括光标位置和classpath等。
9.UDP编程实践:
package chattest; import java.awt.*; import java.awt.event.*; import java.net.*; public class Chat extends Frame { /** * @param args */ List list = new List(8); TextField t1 = new TextField("127.0.0.1",15); TextField t2 = new TextField(20); Panel p = new Panel(); DatagramSocket ds = null; public Chat() { p.add(t1, "West"); p.add(t2, "East"); this.add(list, "Center"); this.add(p, "South"); try { ds = new DatagramSocket(); } catch (SocketException e1) { e1.printStackTrace(); } t2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { byte[] buf = t2.getText().getBytes(); try { DatagramPacket dp = new DatagramPacket(buf,buf.length, InetAddress.getByName(t1.getText()),3555); ds.send(dp); } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); } t2.setText(""); } }); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { ds.close(); dispose(); System.exit(0); } }); new Thread(new Runnable() { public void run() { try { byte[] buf = new byte[1024]; ds = new DatagramSocket(3555); DatagramPacket dp = new DatagramPacket(buf, buf.length); while(true) { ds.receive(dp); String str = new String(buf, 0, dp.getLength());//注意:此处一定要通过dp.getLength()获得数据长度 //否则系统会以为数据长度为1024,从而如果像下面再增加字符串的时候,系统打印就会出现异常。 String strin = str + " from " + dp.getAddress().getHostAddress()+ ":" + dp.getPort(); System.out.println(strin); list.add(strin, 0); } } catch (Exception e) { if(!ds.isClosed()) e.printStackTrace(); } } }).start(); } public static void main(String[] args) { // TODO Auto-generated method stub Chat c = new Chat(); c.setTitle("Let's Chat"); c.setSize(330,400); c.setResizable(false); c.setVisible(true); } }
13.私有IP通过网关代理上网的原理,端口映射表。私有IP的某个端口通过映射表和网关的某个端口对应,然后又网关和外部网通信。端口映射表是动态的,只有私有IP先向外发送数据,才会临时建立这个映射表。
14.TCP客户端程序与TCP服务端程序的交互过程:1.服务器程序创建一个serversocket,调用accept方法等待客户来连接。2.客户端程序创建一个socket并请求与服务器连接。3.服务器接收请求并建立一个新的socket和该客户建立专线连接。4.建立了连接的两个socket在一个单独的线程(由服务器程序创建)上对话。5.服务器开始等待新的连接请求,当新的连接请求到达时,重复步骤2和步骤5的过程。相当于114总机台接受客户打电话的情况一样。
15.在Dos窗口下输入telnet,可以调用windows系统自带的客户端,命令格式是“telnet IP地址 Port”,从而可以和服务器程序进行通信。
16.编写TCP服务器端程序,利用telent和服务器之间进行通信。
package urltest; import java.net.*; import java.util.*; import java.io.*; public class URLTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub getContentofLan("ja"); } public static void getContentofLan(String lan) { try { URL url = new URL("http://www.google.com");//注意:此处一定要加"http://",否则程序将找不到地址。 HttpURLConnection huc = (HttpURLConnection)url.openConnection(); huc.addRequestProperty("Accept-Language",lan); Map request = huc.getRequestProperties(); Set rs = request.keySet(); Iterator it = rs.iterator(); while(it.hasNext()) { String field = (String)it.next(); System.out.println(field + huc.getRequestProperty(field)); } huc.connect(); Map response = huc.getHeaderFields(); Set res = response.keySet(); Iterator itr = res.iterator(); while(itr.hasNext()) { //System.out.println("大家好啊!"); String field = (String)itr.next(); System.out.println(field + huc.getHeaderField(field)); } InputStream in = huc.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(in)); String str; while((str = br.readLine())!= null) { System.out.println(str); } br.close(); huc.disconnect(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
相关文章推荐
- Java高级部分网络编程重点总结
- JAVA高级视频 网络编程 05 服务器端接受客户端请求的代码
- Java网络编程总结
- java网络编程总结
- 总结C#网络编程中对于Cookie的设定要点
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- Java网络编程【总结】
- Java高级_网络编程
- java网络编程学习详解和总结!
- Java总结之——网络编程
- 黑马程序员_java高级篇网络编程TCP实战Day8(上)
- JAVA高级02--IO输入与输出--要点总结2
- Java 网络编程学习总结
- Java基础知识强化之网络编程笔记05:UDP之多线程实现聊天室案例
- 黑马程序员---java网络编程学习总结
- Java 基础高级2 网络编程
- Java 网络编程之 (完全总结)
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- java编程的一些注意事项,网络资源总结