您的位置:首页 > 理论基础 > 计算机网络

黑马程序员——网络编程(二)

2015-11-17 09:00 489 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!
-------
●TCP-上传图片

import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
public
class
TCPClient {
    public
static void
main(String[] args)
throws Exception {
       Socket s = new Socket(InetAddress.getLocalHost(),11000);
       OutputStream out = s.getOutputStream();
       FileInputStream bis = new FileInputStream("g:/tupian.jpg");
       InputStream in = s.getInputStream();
       int len = 0;
       byte[] buf =
new byte[1024];
       while((len=bis.read(buf))!=-1){
           out.write(buf,0,len);
           out.flush();
       }
       s.shutdownOutput();
       len=in.read(buf);
       System.out.println(new String(buf,0,len));
       s.close();
       bis.close();
    }
}
 

package morning;
 
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
 
public
class
TCPServer {
    public
static void
main(String[] args)
throws IOException {
       ServerSocket ss = new ServerSocket(11000);
       Socket s = ss.accept();
       InetAddress ip = s.getInetAddress();
       System.out.println("Client:"+ip+"---connection");
       InputStream bis = s.getInputStream();
       FileOutputStream fos = new FileOutputStream("g:/TU.jpg");
       OutputStream out = s.getOutputStream();
      
      
       int len = 0;
       byte[] buf =
new byte[1024];
       while((len=bis.read(buf))!=-1){
           fos.write(buf, 0, len);
           fos.flush();
       }
       out.write("上传成功".getBytes());
      
       fos.close();
       ss.close();
       s.close();
    }
}
●TCP-客户端并发上传图片

package morning;
 
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
class PicThread
implements Runnable{
    public Socket
s;
    public
int
cnt = 0;
    public PicThread(Socket s) {
       super();
       this.s = s;
    }
    public
void
run(){
       try {
           InetAddress ip = s.getInetAddress();
           System.out.println("Client:"+ip+"---connection");
           InputStream bis= s.getInputStream();
           File file = new File("g:/("+(cnt)+")"+".jpg");
           while(file.exists())
              file=new File("g:/("+(cnt++)+")"+".jpg");
           FileOutputStream fos = new FileOutputStream(file);
           OutputStream out = s.getOutputStream();      

           int len = 0;
           byte[] buf =
new byte[1024];
           while((len=bis.read(buf))!=-1){
              fos.write(buf, 0, len);
              fos.flush();
           }
           out.write("上传成功".getBytes());
           fos.close();
           s.close();
       } catch (IOException e) {
           throw
new
RuntimeException("上传失败!");
       }
    }
}
public
class
TCPServer {
    public
static void
main(String[] args)
throws IOException {
       ServerSocket ss = new ServerSocket(11000);
       while(true){
           Socket s = ss.accept();
           PicThread p = new PicThread(s);
           new Thread(p).start();
       }
    }
}
 
 
package morning;
 
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
 
public
class
TCPClient {
    public
static void
main(String[] args)
throws Exception {
       Socket s = new Socket(InetAddress.getLocalHost(),11000);
       OutputStream out = s.getOutputStream();
       FileInputStream bis = new FileInputStream("g:/tupian.jpg");
       InputStream in = s.getInputStream();
       int len = 0;
       byte[] buf =
new byte[1024];
       while((len=bis.read(buf))!=-1){
           out.write(buf,0,len);
           out.flush();
       }
       s.shutdownOutput();
       len=in.read(buf);
       System.out.println(new String(buf,0,len));
       s.close();
       bis.close();
    }
}
 
●TCP-客户端并发登录

package evening;
 
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
 
class UserThread
implements Runnable {
    Socket s;
 
    public UserThread(Socket s) {
       super();
       this.s = s;
    }
 
    @Override
    public
void
run() {
       String ip = s.getInetAddress().getHostAddress();
       System.out.println(ip+"connection");
       try {
           for (int i = 0; i < 3; i++) {
              BufferedReader bufin = new BufferedReader(
                     new InputStreamReader(s.getInputStream()));
              String name = bufin.readLine();
              if(name==null){
                  break;
              }
              BufferedReader bufr = new BufferedReader(new FileReader(
                     "g:/user.txt"));
              PrintWriter out = new PrintWriter(s.getOutputStream(),
true);
              String line = null;
              boolean flag =
false;
              while ((line = bufr.readLine()) !=
null) {
                  if (name.equals(line)) {
                     flag = true;
                     break;
                  }
              }
              if (flag) {
                  System.out.println(name +
"已登陆");
                  out.println(name+ "欢迎光临");
                  break;
              }else{
                  System.out.println(name+"尝试登录");
                  out.println(name+"不存在");
              }
           }
           s.close();
       } catch (IOException e) {
           throw
new
RuntimeException(ip+"校验失败");
       }
 
    }
}
public
class
LoginServer {
    public
static void
main(String[] args)
throws IOException {
       ServerSocket ss = new ServerSocket(10010);
       while (true) {
           Socket s = ss.accept();
           new Thread(new UserThread(s)).start();
       }
    }
}
 

 

package evening;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
 
public
class
LoginClient {
    public
static void
main(String[] args)
throws  IOException {
       Socket s = new Socket("192.168.161.1",10010);
       BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
       PrintWriter out = new PrintWriter(s.getOutputStream(),true);
       BufferedReader bufin = new BufferedReader(new InputStreamReader(s.getInputStream()));
       for (int i = 0; i < 3; i++) {
           String line = bufr.readLine();
           if(line==null)
              break;
           out.println(line);
           String info = bufin.readLine();
           System.out.println(info);
           if(info.contains("欢迎"))
              break;
       }
       bufr.close();
       s.close();
    }
}
●用浏览器访问服务器(请求消息头/应答消息头)

请求消息头 和请求消息体 中间加空行

GET / HTTP/1.1
Host: 192.168.161.1:10020
User-Agent: Mozilla/5.0(Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language:zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive

●应用层

URL

String getFile()

         获取此 URL 的文件名。

 String getHost()

         获取此 URL 的主机名(如果适用)。

 String getPath()

         获取此 URL 的路径部分。

 intgetPort()

         获取此 URL 的端口号。

 String getProtocol()

         获取此 URL 的协议名称。

 String getQuery()

         获取此 URL 的查询部分。

openStream()

URLConnection

 

●小知识

Socket(InetAddress address, int port)

void connect(SocketAddress endpoint)

InetSocketAddress 此类实现 IP 套接字地址(IP 地址 + 端口号)。

 

ServerSocket(int port, int backlog)  backlog - 队列的最大长度。

●域名解析

想要将主机名翻译成ip地址,需要域名解析。DNS

http://127.0.0.1:8080

http://localhost:8080

其实127和localhost的映射关系就在本机上

c:、windows\systems\drivers\ect\host

 

 

127.0.0.1     myeclipse.com

避免升级

127.0.0.1      恶意网站

避免中毒
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java