java网络编程

1、  网络编程作为Java的主要应用之一,可以使用java.net包来实现。

2、  同一网络或不同网络中计算机的通讯需要特定的一套规则,即协议。

3、  协议的本质可以理解成就一串字符串,它分报头和报文,报头里面装发送的地址,IP等,我们传递的内容都在报文里面。

4、  ISO国际标准化组织提供的OSI开放系统互连模型,提出标准7层模型分别是:应用层,表示层,会话层,传输层,网络层,数据链层和物理层。但java里已经简化成了四层:分别是应用层,传输层,网络层和网络接口层。

5、  HTTP、FTP、BOOTP、SMTP….全属于应用层;TCP/UDP属于传输层;IP属于网络层。

6、  TCP与UDP的区别:TCP遵守三次握手原则,即发送之前会先向对方发出请求,等对方准备好了再发送。这样保证协议的正确性但速度慢,而UDP与它相反,所以速度比它快,但是不安全,数据容易丢失。它适用与视频之间的连接。

7、  向另一台计算机请求某些服务的计算机即称为客户端,而处理请求的计算机称为服务器。

8、  Java.net包中包含下列重要的类:

    1)InetAddress类:封装计算机的IP地址和DNS。

    2)Socket类:发送TCP消息。

    3)ServerSocket类:创建服务器,用于接收请求。

    4)DatagramSocket类:用于发送或接收数据包。基于UDP。

    5)DatagramPacket类:数据容器(封包)的作用。

    6)URL类:代表统一源定位符的对象。

    7)URLConnection:所有代表应用程序与URL之间通信链接的类的超类。

9、  套接字(Socket)是一种进程间的数据交换机制。这些进程可以再同一机器上,也可以在通过网络连接的不同机器上。换句话说,套接字起到通信端点的作用。

10、TCP/IP是最可靠的双向流协议。使用TCP/IP可以发送任意数量的数据。在java.net包中,有两个类来实现Socket通信:Socket和ServerSocket类。

11、实际上套接字只是计算机上已编号的端口,如果发送方和接收方计算机确定好端口,他们就可以通信了。

12、服务端的代码:

       public class MyServer {

       public static void main(String[] args) {

              // TODO Auto-generated method stub

              System.out.println("Server starting......");

              try {

                     ServerSocket server = new ServerSocket(8080);

                     while (true) {

                            Socket socket = server.accept();

                            System.out.print("客户端说:");

                            InputStream in = socket.getInputStream();

                            BufferedReader br = new BufferedReader(new InputStreamReader(in));

                            System.out.println(br.readLine());

                            br.close();

                            in.close();

                            socket.close();

                     }    

              } catch (IOException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

       }

}

13、客户端的代码:

       public class MyClient {

       public static void main(String[] args) {

              // TODO Auto-generated method stub

              try {

                     Socket client = new Socket("127.0.0.1",8080);

                     OutputStream out = client.getOutputStream();

                     BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out));

                     System.out.println("你想对她说什么?");

                     Scanner scan = new Scanner(System.in);

                     bw.write(scan.next());

                     bw.close();

                     out.close();

                     client.close();

              } catch (UnknownHostException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              } catch (IOException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

       }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值