黑马程序员-网络编程-自定义服务端和客户端

来源:互联网 发布:注册公司成本 知乎 编辑:程序博客网 时间:2024/05/19 18:17

 

----------- android培训java培训java学习型技术博客、期待与您交流! ------------ 

 

 

浏览器客户端-自定义服务端

 

/*
演示客户端和服务端。

1,
客户端:浏览器 (telnet)
服务端:自定义。

2,
客户端:浏览器。
服务端:Tomcat服务器。

3,
客户端:自定义。(图形界面)
服务端:Tomcat服务器。

 

*/

import java.net.*;
import java.io.*;
class ServerDemo
{
 public static void main(String[] args) throws Exception
 {
  ServerSocket ss = new ServerSocket(11000);

  Socket s = ss.accept();
  System.out.println(s.getInetAddress().getHostAddress());

  InputStream in = s.getInputStream();

  byte[] buf = new byte[1024];

  int len = in.read(buf);

  System.out.println(new String(buf,0,len));


  PrintWriter out = new PrintWriter(s.getOutputStream(),true);

  out.println("<font color='red' size='7'>客户端你好</font>");

  s.close();

  ss.close();
 }
}

 

 

自定义浏览器-Tomcat服务端

 


 

import java.io.*;
import java.net.*;

class MyIE
{
 public static void main(String[] args)throws Exception
 {
  Socket s = new Socket("192.168.1.254",8080);
  
  PrintWriter out = new PrintWriter(s.getOutputStream(),true);

  out.println("GET /myweb/demo.html HTTP/1.1");
  out.println("Accept: */*");
  out.println("Accept-Language: zh-cn");
  out.println("Host: 192.168.1.254:11000");
  out.println("Connection: closed");

  out.println();
  out.println();

  BufferedReader bufr = new BufferedReader(new InputStreamReader(s.getInputStream()));

  String line = null;

  while((line=bufr.readLine())!=null)
  {
   System.out.println(line);
  }

  s.close();

 


 }
}
/*
http://192.168.1.254:11000/myweb/demo.html

GET /myweb/demo.html HTTP/1.1
Accept: application/x-shockwave-flash, image/gif, image/x-xbitmap, image/jpeg, i
mage/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application
/msword, application/QVOD, application/QVOD,
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0
.50727)
Host: 192.168.1.254:11000
Connection: Keep-Alive


*/

 

 

 

 自定义图形界面浏览器

 

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
class  MyIEByGUI
{
 private Frame f;
 private TextField tf;
 private Button but;
 private TextArea ta;
 
 private Dialog d;
 private Label lab;
 private Button okBut;


 MyIEByGUI()
 {
  init();
 }
 public void init()
 {
  f = new Frame("my window");
  f.setBounds(300,100,600,500);
  f.setLayout(new FlowLayout());

  tf = new TextField(60);

  but = new Button("转到");

  ta = new TextArea(25,70);


  d = new Dialog(f,"提示信息-self",true);
  d.setBounds(400,200,240,150);
  d.setLayout(new FlowLayout());
  lab = new Label();
  okBut = new Button("确定");

  d.add(lab);
  d.add(okBut);

 

  f.add(tf);
  f.add(but);
  f.add(ta);


  myEvent();
  f.setVisible(true);
 }
 private void  myEvent()
 {

  okBut.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)
   {
    d.setVisible(false);
   }
  });
  d.addWindowListener(new WindowAdapter()
  {
   public void windowClosing(WindowEvent e)
   {
    d.setVisible(false);
   }
  });

  tf.addKeyListener(new KeyAdapter()
  {
   public void keyPressed(KeyEvent e)
   {
    try
    {
      if(e.getKeyCode()==KeyEvent.VK_ENTER)
     showDir();
    }
    catch (Exception ex)
    {
    }
   
   }
  });


  but.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)
   {
    try
    {
     showDir();
    }
    catch (Exception ex)
    {
    }
    
    
   }
  });

  f.addWindowListener(new WindowAdapter()
  {
   public void windowClosing(WindowEvent e)
   {
    System.exit(0); 
   }
  });
 }

 private void showDir()throws Exception
 {

  ta.setText("");
  String url = tf.getText();//http://192.168.1.254:8080/myweb/demo.html
  
  int index1 = url.indexOf("//")+2;

  int index2 = url.indexOf("/",index1);

 

  String str = url.substring(index1,index2);
  String[] arr = str.split(":");
  String host = arr[0];
  int port = Integer.parseInt(arr[1]);

  String path = url.substring(index2);
  //ta.setText(str+"...."+path);


  Socket s = new Socket(host,port);
  
  PrintWriter out = new PrintWriter(s.getOutputStream(),true);

  out.println("GET "+path+" HTTP/1.1");
  out.println("Accept: */*");
  out.println("Accept-Language: zh-cn");
  out.println("Host: 192.168.1.254:11000");
  out.println("Connection: closed");

  out.println();
  out.println();

  BufferedReader bufr = new BufferedReader(new InputStreamReader(s.getInputStream()));

  String line = null;

  while((line=bufr.readLine())!=null)
  {
   ta.append(line+"\r\n");
  }

  s.close();

 }

 public static void main(String[] args)
 {
  new MyIEByGUI();
 }
}

 

 

URL-URLConnection
 

 

import java.net.*;
class URLDemo
{
 public static void main(String[] args) throws MalformedURLException
 {
  URL url = new URL("
http://192.168.1.254/myweb/demo.html?name=haha&age=30");


  System.out.println("getProtocol() :"+url.getProtocol());
  System.out.println("getHost() :"+url.getHost());
  System.out.println("getPort() :"+url.getPort());
  System.out.println("getPath() :"+url.getPath());
  System.out.println("getFile() :"+url.getFile());
  System.out.println("getQuery() :"+url.getQuery());

  /*int port = getPort();
  if(port==-1)
   port = 80;

  getPort()==-1
  */
 }
}
/*
 String getFile()
          获取此 URL 的文件名。
 String getHost()
          获取此 URL 的主机名(如果适用)。
 String getPath()
          获取此 URL 的路径部分。
 int getPort()
          获取此 URL 的端口号。
 String getProtocol()
          获取此 URL 的协议名称。
 String getQuery()
          获取此 URL 的查询部

*/

 

import java.net.*;
import java.io.*;
class  URLConnectionDemo
{
 public static void main(String[] args) throws Exception
 {
  URL url = new URL("
http://192.168.1.254:8080/myweb/demo.html");

  URLConnection conn = url.openConnection();
  System.out.println(conn);
  
  InputStream in = conn.getInputStream();

  byte[] buf = new byte[1024];

  int len = in.read(buf);

  System.out.println(new String(buf,0,len));

 

 


 }
}

 

 

 小知识点

 

InetAddress 封装的是IP地址
InetSocketAddress 封装的是IP地址和端口

ServerSocket 可以建立端口
    backlog 队列的最大长度(必须是大于0的正值)

 

域名解析

 

 

 

----------- android培训java培训java学习型技术博客、期待与您交流! ------------