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 阅读(358) |
评论 (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 阅读(309) |
评论 (0) |
编辑 收藏
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class GoogleFinderNew {
private static String address = "https://www.google.com.hk/search?hl=en&q=";
private static String query = "";
private static String charset = "UTF-8";
private static List<String> useragentList = new ArrayList<String>();
private static void initUserAgentList(String filename) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader(filename));
String line = null;
while((line = reader.readLine()) != null){
useragentList.add(line.trim());
}
reader.close();
return;
}
private static List<String> getpages(URL url) throws IOException {
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
String line;
String ans = "";
while ((line = reader.readLine()) != null){
ans += line + "\n";
}
int st = -1, ed = 0;
List<String> pagesList = new ArrayList<String>();
while((st = ans.indexOf("<h3 class=\"r\"><a href=\"", ed)) != -1) {
ed = ans.indexOf("\"", st+23);
//System.out.println(ans.substring(st+23, ed));
pagesList.add(ans.substring(st+23, ed));
}
return pagesList;
}
public static void main(String[] args) throws MalformedURLException, IOException, InterruptedException {
Scanner in = new Scanner(System.in);
String askurl = in.nextLine();
query = in.nextLine();
initUserAgentList("D:\\useragent.txt");
//System.setProperty("http.agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.3.154.9 Safari/525.19");
int pages = 10;
for(int i=0;i<pages;i++) {
System.out.println((i+1) + " ..");
int index = (int)(useragentList.size()*Math.random());
if(index == useragentList.size()) index --;
String theUserAgent = useragentList.get(index);
System.setProperty("http.agent", theUserAgent);
String urlString = address + URLEncoder.encode(query, charset);
if(i != 0) urlString += "&start=" + i + "0";
//System.out.println(urlString);
List<String> list = getpages(new URL(urlString));
for(String page : list) {
if(page.contains(askurl)) {
// if(page.equals(askurl)) {
System.out.println(askurl + " found in the " + (i+1) + " th page.");
System.out.println(page);
return;
}
}
int extraTime = 0; //(int)(3000 * Math.random());
Thread.sleep(1000 + extraTime);
}
System.out.println("can't find " + askurl + " in the first " + pages + " pages.");
}
}
posted @
2015-07-29 16:41 marchalex 阅读(262) |
评论 (0) |
编辑 收藏
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.List;
import java.util.Scanner;
import java.util.StringTokenizer;
import com.google.gson.Gson;
public class GoogleFinder {
public static void main(String[] args) throws IOException, InterruptedException {
String address = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=";
String query = "";
String charset = "UTF-8";
Scanner in = new Scanner(System.in);
String targeturl = in.nextLine();
query = in.nextLine();
for(int i=0;i<125;i++) {
URL url = new URL(address + URLEncoder.encode(query, charset) + "&start=" + i);
//System.out.println(url);
Reader reader = new InputStreamReader(url.openStream(), charset);
GoogleResults results = new Gson().fromJson(reader, GoogleResults.class);
for(int t=0;t<30;t++) {
System.out.print(".");
Thread.sleep(2000);
} System.out.println("");
for(int j=0;j<4;j++) {
String ss = results.getResponseData().getResults().get(j).getUrl().toLowerCase();
if(ss.contains(targeturl)) {
System.out.println(ss);
System.out.println(results.getResponseData().getResults().get(j).getTitle());
System.out.println("Found in the " + (i*4+j+1) + " th");
return;
}
}
System.out.println("" + ((i+1)*4) + " pages found.");
}
System.out.println("Can find " + targeturl + " in the first 500 pages");
}
}
class GoogleResults {
private ResponseData responseData;
public ResponseData getResponseData() {
return responseData;
}
public void setResponseData(ResponseData responseData) {
this.responseData = responseData;
}
public String toString() {
return "ResponseData[" + responseData + "]";
}
static class ResponseData {
private List<Result> results;
public List<Result> getResults() {
return results;
}
public void setResults(List<Result> results) {
this.results = results;
}
public String toString() {
return "Results[" + results + "]";
}
}
static class Result {
private String url;
private String title;
public String getUrl() {
return url;
}
public String getTitle() {
return title;
}
public void setUrl(String url) {
this.url = url;
}
public void setTitle(String title) {
this.title = title;
}
public String toString() {
return "Result[url:" + url + ",title:" + title + "]";
}
}
}
posted @
2015-07-29 14:16 marchalex 阅读(280) |
评论 (0) |
编辑 收藏
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class GoogleFinderNew {
private static String address = "https://www.google.com.hk/search?hl=en&q=";
private static String query = "";
private static String charset = "UTF-8";
private static void test() {
String ans = "abc<h3>helloworld</h3>hehe<h3>nicetomeetyou</h3>";
int st = ans.indexOf("<h3>");
int ed = ans.indexOf("</h3>");
System.out.println(st + " " + ed);
System.out.println(ans.substring(st+4, ed));
}
private static List<String> getpages(URL url) throws IOException {
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
String line;
String ans = "";
while ((line = reader.readLine()) != null){
ans += line + "\n";
}
int st = -1, ed = 0;
List<String> pagesList = new ArrayList<String>();
while((st = ans.indexOf("<h3 class=\"r\"><a href=\"", ed)) != -1) {
ed = ans.indexOf("\"", st+23);
//System.out.println(ans.substring(st+23, ed));
pagesList.add(ans.substring(st+23, ed));
}
return pagesList;
}
public static void main(String[] args) throws MalformedURLException, IOException, InterruptedException {
Scanner in = new Scanner(System.in);
String askurl = in.nextLine();
query = in.nextLine();
System.setProperty("http.agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.11 TaoBrowser/2.0 Safari/536.11");
int pages = 100;
for(int i=0;i<pages;i++) {
System.out.println((i+1) + " ..");
String urlString = address + URLEncoder.encode(query, charset);
if(i != 0) urlString += "&start=" + i + "0";
//System.out.println(urlString);
List<String> list = getpages(new URL(urlString));
for(String page : list) {
if(page.contains(askurl)) {
// if(page.equals(askurl)) {
System.out.println(askurl + " found in the " + (i+1) + " th page.");
System.out.println(page);
return;
}
}
Thread.sleep(1000);
}
System.out.println("can't find " + askurl + " in the first " + pages + " pages.");
}
}
posted @
2015-07-29 14:16 marchalex 阅读(300) |
评论 (0) |
编辑 收藏