march alex's blog
hello,I am march alex
posts - 52,comments - 7,trackbacks - 0
Client端:

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

public class ChatClient {
    
private static final String SERVER_IP = "127.0.0.1";
    
private static final int SERVER_PORT = 8888;
    
    Socket socket 
= null;
    DataOutputStream dos 
= null;
    DataInputStream dis 
= null;
    
private boolean bConnected = false;

    
private static Scanner in = new Scanner(System.in);
    
private static String hostInfo = null;

    Thread tRecv 
= new Thread(new RecvThread());

    
public static void main(String[] args) {
        
new ChatClient().launch();
    }

    
public void launch() {
        connect();
        tRecv.start();
    }

    
public void connect() {
        
try {
            socket 
= new Socket(SERVER_IP, SERVER_PORT);
            dos 
= new DataOutputStream(socket.getOutputStream());
            dis 
= new DataInputStream(socket.getInputStream());
            bConnected 
= true;

            InetAddress addr 
= InetAddress.getLocalHost();
            String ip 
= addr.getHostAddress().toString();// 获得本机IP
            String address = addr.getHostName().toString();// 获得本机名称
            hostInfo = ip + "\t" + address + "\tconnected.";
            System.out.println(hostInfo);
            dos.writeUTF(hostInfo);
            dos.flush();
        } 
catch (UnknownHostException e) {
            e.printStackTrace();
        } 
catch (IOException e) {
            e.printStackTrace();
        }
    }

    
public void disconnect() throws IOException {
        
try {
            dos.close();
            dis.close();
            socket.close();
        } 
catch (IOException e) {
        }
    }

    
private class RecvThread implements Runnable {
        
public void run() {
            
while (bConnected) {
                
try {
                    
if (in.hasNext()) {
                        String talk 
= in.nextLine();
                        
if (talk.equals("quit")) {
                            disconnect();
                            bConnected 
= false;
                            
break;
                        }
                        dos.writeUTF(talk);
                        dos.flush();
                    }
                    String talk 
= dis.readUTF();
                    System.out.println(talk);
                } 
catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
server端:
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.IOException;
import java.net.BindException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;

public class ChatServer {
    
boolean started = false;
    ServerSocket ss 
= null;
    
    List
<Client> clients = new ArrayList<Client>();
    
    
public static void main(String[] args) {
        
new ChatServer().start();
    }
    
    
public void start() {
        
try {
            ss 
= new ServerSocket(8888);
            started 
= true;
        } 
catch (BindException e) {
            System.err.println(
"port in use.please stop program using this port and restart.");
            System.exit(
0);
        } 
catch (IOException e) {
            e.printStackTrace();
        }
        
        
try {
            
while(started) {
                Socket s 
= ss.accept();
                Client c 
= new Client(s);
                
// System.out.println("a client connected.");
                new Thread(c).start();
                clients.add(c);
            }
        } 
catch (IOException e) {
            e.printStackTrace();
        } 
finally {
            
try {
                ss.close();
            } 
catch (IOException e) {
                e.printStackTrace();
            }
        }
        
    }
    
    
class Client implements Runnable {
        
private Socket s;
        
private DataInputStream dis = null;
        
private DataOutputStream dos = null;
        
private boolean bConnected = false;
        
        
public Client(Socket s) {
            
this.s = s;
            
try {
                dis 
= new DataInputStream(s.getInputStream());
                dos 
= new DataOutputStream(s.getOutputStream());
                bConnected 
= true;
            } 
catch (IOException e) {
                e.printStackTrace();
            }
        }
        
        
public void send(String str) {
            
try {
                dos.writeUTF(str);
                dos.flush();
            } 
catch (IOException e) {
                clients.remove(
this);
                System.out.println(
"a client quit.");
                
//e.printStackTrace();
            }
        }
        
        
public void run() {
            
try {
                
while(bConnected) {
                    String str 
= dis.readUTF();
                    solveTalk(str);
                }    
            } 
catch (EOFException e) {
                System.out.println(
"Client closed!");
            } 
catch (IOException e) {
                e.printStackTrace();
            } 
finally {
                
try {
                    
if(dis != null) dis.close();
                    
if(dos != null) dos.close();
                    
if(s != null) {
                        s.close();
                        s 
= null;
                    }
                } 
catch (IOException e1) {
                    e1.printStackTrace();
                }
            }
        }
        
        
private void solveTalk(String talk) {
            System.out.println(talk);
            
for(int i=0;i<clients.size();i++) {
                Client c 
= clients.get(i);
                c.send(talk);
            }
        }
    }
    
}
posted @ 2015-08-18 10:03 marchalex 阅读(351) | 评论 (0)编辑 收藏

import java.io.BufferedInputStream; 
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 
 
public class RegexTestHarnessV4 { 
 
    
public static void main(String[] args) throws IOException { 
        BufferedReader br 
= new BufferedReader( 
                
new InputStreamReader(new BufferedInputStream(System.in)) 
            ); 
        
while (true) { 
            System.out.print(
"\nEnter your regex: "); 
            Pattern pattern 
= Pattern.compile(br.readLine()); 
            System.out.print(
"Enter input string to search: "); 
            Matcher matcher 
= pattern.matcher(br.readLine()); 
            
boolean found = false
            
while (matcher.find()) { 
                System.out.println(
"I found the text \"" + matcher.group() + 
                        "\" starting at index " + matcher.start() + 
                        " and ending at index " + matcher.end() + 
                        
"."); 
                found 
= true
            } 
            
if (!found) { 
                System.out.println(
"No match found."); 
            } 
        } 
    } 
}


样例:

Enter your regex: [0-9]+
Enter input string to search: fdsdffd9090fd
I found the text "9090" starting at index 7 and ending at index 11.

Enter your regex: class="fav-num[^"]*"[^>]*>[^<]*
Enter input string to search: <i class="litb-icon-fav-on"></i><i class="litb-icon-fav-off"></i><span class="fav-num">(151)</span>
I found the text "class="fav-num">(151)" starting at index 71 and ending at index 92.

资料:
http://blog.csdn.net/yaerfeng/article/details/28855587
posted @ 2015-08-12 13:58 marchalex 阅读(303) | 评论 (0)编辑 收藏