1 import java.net.Socket;
2 import java.io.*;
3 import java.util.Scanner;
4 import java.util.regex.Pattern;
5 import java.util.regex.Matcher;
6
7 class SocketTest
8 {
9 public static void main(String[] args)
10 {
11 Scanner sc=new Scanner(System.in);
12 System.out.println("please input ipaddress:");
13 boolean isIp=false;
14 String strIp="";
15 //ip正则匹配
16 Pattern pattern=Pattern.compile("((?:(?:25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))\\.){3}(?:25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d))))");
17 while(!isIp){
18 //System.out.println(isIp);
19 strIp=sc.next();
20 Matcher matcher=pattern.matcher(strIp);
21 //如果输入的数据满足ip格式,继续运行
22 if(matcher.matches()){
23 isIp=true;
24 }
25 else{
26 System.out.println("the ip is wrong,please input again:");
27 }
28 }
29 int port=80;
30 boolean isNu=false;
31 //如果输入的为正确的端口号(整数)继续运行
32 while(!isNu){
33 try{
34 System.out.println("please input port");
35 String strPort=sc.next();
36 port=Integer.parseInt(strPort);
37 isNu=true;
38 }catch(Exception ex){
39 System.out.println("is not int ,please input agein:");
40 }
41 }
42
43 System.out.println("the ip is :"+strIp);
44 System.out.println("the port is :"+port);
45 if(strIp!=null&&strIp.length()>0){
46 try{
47 //通过ip和端口创建socket实例
48 Socket socket=new Socket(strIp,port);
49 //获取socket的输出流
50 OutputStream outputStream=socket.getOutputStream();
51 //讲http请求头信息输入至socket输出流中
52 PrintWriter out=new PrintWriter(outputStream,true);
53 out.println("GET / HTTP/1.1"); //get 请求,获取目录为/ http协议为http 1.1
54 out.println("Host: localhost:8888");
55 out.println("Connection: Close");
56 out.println();
57 //接收服务端返回的数据流
58 BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
59 boolean loop=true;
60 StringBuffer sb=new StringBuffer(8096);
61 while(loop){
62 if ( in.ready() ) {
63 int i=0;
64 while (i!=-1) {
65 i = in.read();
66 sb.append((char) i);
67 }
68 loop = false;
69 Thread.currentThread().sleep(50);
70 }
71 }
72 System.out.println(sb.toString());
73 socket.close();
74 }
75 catch (Exception ex) {
76 ex.printStackTrace();
77 System.out.println(ex.toString());
78 }
79 }
80 }
81 }