如何做网站二维码,淄博网站建设设计公司,哪个公司网络信号最好,购物商城论文网络应用模式主要有#xff1a; 主机/终端模式#xff1a;集中计算#xff0c;集中管理#xff1b;客户机/服务器#xff08;Client/Server,简称C/S#xff09;模式#xff1a;分布计算#xff0c;分布管理#xff1b;浏览器/服务器模式#xff1a;利用Internet跨平台…网络应用模式主要有 主机/终端模式集中计算集中管理客户机/服务器Client/Server,简称C/S模式分布计算分布管理浏览器/服务器模式利用Internet跨平台。www万维网就是建立在客户机/服务器模式上以HTML语言和HTTP协议为基础能够提供各种Internet服务的信息浏览系统。网络信息放在主机的不同位置www服务器利用超文本链路链接各项信息。www客户机浏览器Brower负责与服务器建立联系向服务器发送请求处理HTML超媒体提供图形用户界面GUI显示信息等。在客户机/服务器工作模式中在Server端要准备接受多个Client端计算机的通信。为此除用IP地址标识Internet上的计算机之外另还引入端口号用端口号标识正在Server端后台服务的线程。端口号与IP地址的组合称为网络套接字socket。Java语言在实现C/S模式中套接字分为两类 在Server端ServerSocket类支持底层的网络通信在Client端Socket类支持网络的底层通信。 Server机通过端口总线I/O地址提供面向Client机的服务Server机在它的几个不同端口分别同时提供几种不同的服务。Client接入Server的某一端口通过这个端口提请Server机为其服务。规定端口号0~1023供系统专用。例如HTTP协议在端口80telnet协议在端口23。端口1024~65535供应用程序使用。当Client程序和Server程序需要通信时可以用Socket类建立套接字连接。套接字连接可想象为一个电话呼叫最初是Client程序建立呼叫Server程序监听呼叫完成后任何一方都可以随时讲话。双方实现通信有流式socket和数据报式socket两种可选方式 流式socket是有连接的通信即TCP(Transmission Control Protocol)每次通信前建立连接通信结束后断开连接。特点是可以保证传输的正确性、可靠性。数据报式socket是无连接的通信即UDP(User Datagram Protocol)将欲传输的数据分成 小包直接上网发送。无需建立连接和拆除连接速度快但无可靠保证。 流式socket在Client程序和Server程序间建立通信的通道。每个socket可以进行读和写两种操作。对于任一端与对方的通信会话过程是建立socket连接获得输入/输出流读数据/写数据通信完成后关闭socket拆除连接。流式Socket的通信过程见【例 13-1】。利用socket的构造方法可以在客户端建立到服务器的套接字对象 Socket(String host,int port)host是服务器的IP地址port是端口号这些是预先约定的。例如代码 1 try{
2 Socket mySocket new Socket(“http://www.weixueyuan.net” ,1860);
3 }catch(IOException e){} 然后用getInputStream()方法获得输入流用这个输入流读取服务器放入“线路”的信息用getOutputStream()方法获得输出流用这个输出流将信息写入“线路”。 利用ServerSocket的构造方法可以在服务器建立接受客户套接字的服务器套接字对象 ServerSocket(int port)指定端口号创建一个ServerSocket对象。端口号port要与客户呼叫的端口号相同。为此用以下形式代码try{ServerSocket serverSocket new ServerSocket(1860);}catch(IOException e){} 服务器端程序在指定的端口监听当收到Client程序发出的服务请求时创建一个套接字对象与该端口对应的Client程序通信。例如执行上述建立服务器套接字对象的代码确立了对象serverSocket后就可能它使用accept()方法得到Socket对象接收Client程序来自套接字mySocket的信息。如以下代码所示 try{Socket sc serverSocket.accept();//ac是一个Socket对象}catch(IOException e){}
要撤销服务可以关闭Socket对象scsc.close(); 【例 13-3】C/S模式中的Client端应用程序。这是一个Client端的流式Socket通信的简单实例代码说明Client端程序的编写方法。例中Client程序向服务器主机的端口4441提出请求连接建立后完成对服务器的读写。 1 import java.io.*;2 import java.net.*;3 public class Client{4 public static void main(String args[]){5 String s null;Socket mySocket;6 DataInputStream in null;DataOutputStream out null;7 try{8 mySocket new Socket(“localhost”,4441);9 in new DataInputStream(mySocket.getInputStream());
10 out new DataOutputStream(mySocket.getOutputStream());
11 out.writeUTF(“good server!”);
12 while(true){
13 s in.readUTF();
14 if(snull) break;
15 else System.out.println(s);
16 }
17 mySocket.close();
18 }catch(IOException e){
19 System.out.println(“can’t connect”);
20 }
21 }
22 } 【例 13-4】与例10.3 Client端应用程序对应的Server端应用程序。程序在4441端口监听当检测到有客户机请求时产生一个内为“客户你好我是服务器”的字符串输出到客户端。 1 import java.io.*;import java.net.*;2 public class Server{3 public static void main(String args[]){4 ServerSocket server null;5 Socket you null;String s null;6 DataOutputStream out null;7 DataInputStream in null;8 try{9 server new ServerSocket(4441);
10 }catch(IOException e1){
11 system.out.println(“ERROR:” e1);
12 }
13 try{
14 you server.accept();
15 in new DataInputStream(you.getInputStream());
16 out new DataOutputStream(you. getOutputStream());
17 while(true){
18 s in.readUTF();
19 if(s!null) break;
20 }
21 out.writeUTF(“客户你好我是服务器”);
22 out.close();
23 }
24 catch(IOException e){System.out.println(“ERROR:”e);}
25 }
26 } 为了充分发挥计算机的平行工作能力可以把套接字连接工作让一个线程完成。当客户端要请求服务器给予服务或当服务器端接收到一个客户的服务请求就启动一个专门完成信息通信的线程在该线程中创建输入输出流并完成客户端与服务器端的信息交流。 【例 13-5】 将套接字连接工作置于线程的客户端小应用程序。界面在有一个发送信息按纽、一个文本框和一个文本区。客户端应用程序首先与服务器建立套接字连接。使用数据输入流in反复读取服务器放入线路里的信息将收到的信息在文本区中显示。婐志取的信息是“结束”则关闭套接字连接并结束程序。用户也可在文本框输入信息并按发送信息按钮则客户端程序利用数据输出流out,将文本框中的内容发送给服务器。 1 import java.net.*;2 import java.io.*;3 import java.awt.*;4 import javax.swing.*;5 import java.awt.event.*;6 import java.applet.*;7 public class Aclient extends Applet implements Runnable,ActionListener{8 JButton button; JTextField textF; JTextArea textA;9 Socket socket; Thread thread;
10 DataInputStream in; DataOutputStream out;
11 public void init(){
12 setBackground(new Color(120,153,137));
13 setLayout(new BorderLayout());
14 Button new JButton(“发送信息”);
15 textF new JTextField(20);
16 textA new JTextArea(20,30);
17 setSize(450,350);
18 JPanel p new JPanel();
19 p.add(textF); p.add(button);
20 add(textA,”Center”); add(p,”South”);
21 button.addActionListener(this);
22 }
23 public void start(){
24 try{
25 socket new Socket(this.getCodeBase().getHost(),4441);
26 in new DataInputStream(socket.getInputStream());
27 out new DataOutputStream(socket.getOutputStream());
28 }catch(IOException e){}
29 if(threadnull){
30 thread new Thread(this);
31 thread.setPriority(Thread.MIN_PRIORITY);
32 thread.start();
33 }
34 }
35 public void run(){
36 String s null;
37 while(true){
38 try{
39 s in.readUTF();
40 }catch(IOException e){}
41 if(s.equals(“结束”)){
42 try{
43 socket.close();break;
44 }catch(IOException e){}
45 }else texA.append(s “\n”);
46 }
47 }
48 public void actionPerformed(ActionEvent e){
49 if(e.getSource()button){
50 String s textF.getText();
51 if(s! null){
52 try{
53 out.writeUTF(s);
54 }catch(IOException e1){}
55 }
56 else{
57 try{
58 out.writeUTF(“请说话”);
59 }
60 catch(IOException e1){}
61 }
62 }
63 }
64 } 【例 13-6】对应例10.5客户端小应用程序的服务器端小应用程序。程序以端4441建立与客户端的套接字连接服务器端收到客户端的申请后以客户的套接字建立一个线程并启动。如果没有客户申请则继续监听客户的申请。线程按客户的套接字建立输入数据流in和输数据流out。线程利用in读取客户放入线路里的信息。如果接受的信息是“结束”则服务器回复“结束”后关闭套接字连接否则回复“我是服务器你对我说“以及服务器接收到的信息。 1 import java.net.*;2 import java.io.*;3 import java.awt.*;4 import javax.swing.*;5 import java.awt.event.*;6 import java.applet.*;7 public class Aclient extends Applet implements Runnable,ActionListener{8 JButton button; JTextField textF; JTextArea textA;9 Socket socket; Thread thread;
10 DataInputStream in; DataOutputStream out;
11 public void init(){
12 setBackground(new Color(120,153,137));
13 setLayout(new BorderLayout());
14 Button new JButton(“发送信息”);
15 textF new JTextField(20);
16 textA new JTextArea(20,30);
17 setSize(450,350);
18 JPanel p new JPanel();
19 p.add(textF); p.add(button);
20 add(textA,”Center”); add(p,”South”);
21 button.addActionListener(this);
22 }
23 public void start(){
24 try{
25 socket new Socket(this.getCodeBase().getHost(),4441);
26 in new DataInputStream(socket.getInputStream());
27 out new DataOutputStream(socket.getOutputStream());
28 }catch(IOException e){}
29 if(threadnull){
30 thread new Thread(this);
31 thread.setPriority(Thread.MIN_PRIORITY);
32 thread.start();
33 }
34 }
35 public void run(){
36 String s null;
37 while(true){
38 try{
39 s in.readUTF();
40 }catch(IOException e){}
41 if(s.equals(“结束”)){
42 try{
43 socket.close();break;
44 }catch(IOException e){}
45 }else texA.append(s “\n”);
46 }
47 }
48 public void actionPerformed(ActionEvent e){
49 if(e.getSource()button){
50 String s textF.getText();
51 if(s! null){
52 try{
53 out.writeUTF(s);
54 }catch(IOException e1){}
55 }
56 else{
57 try{
58 out.writeUTF(“请说话”);
59 }catch(IOException e1){}
60 }
61 }
62 }
63 } 系列文章 Java知多少上 Java知多少中 Java知多少78Java向量(Vector)及其应用 Java知多少79哈希表及其应用 Java知多少80图形界面设计基础 Java知多少81框架窗口基础 Java知多少82标签、按钮和按钮事件简介 Java知多少83面板基础JPanel和JScrollPane Java知多少84图形界面之布局设计 Java知多少85文本框和文本区 Java知多少86文本框和文本区的输入输出 Java知多少87选择框和单选按钮 Java知多少88列表和组合框 Java知多少89列表和组合框 Java知多少90菜单 Java知多少91对话框 Java知多少92滚动条 Java知多少93鼠标事件 Java知多少94键盘事件 Java知多少95绘图基础 Java知多少96绘图之设置字型和颜色 Java知多少97绘图模式概述 Java知多少98Graphics类的绘图方法 Java知多少99Graphics2D类的绘图方法 Java知多少100图像处理基础 Java知多少101图像缓冲技术 Java知多少102多媒体基础 Java知多少103网络编程之IP地址和InetAddress类 Java知多少104网络编程之统一资源定位符URL转载于:https://www.cnblogs.com/Coda/p/4603758.html