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

java中各种通讯的实例(socket、http等)

2014-10-27 11:39 246 查看
socket通讯的实例:

服务端:

/**

* <b>项目名:</b>复习总结<br/>

* <b>包 名:</b>socket<br/>

* <b>文件名:</b>Server.java<br/>

* <b>版本信息:</b>1.0.0<br/>

* <b>日期:</b>2014-10-22-上午9:45:20<br/>

*

*/

package socket;

import java.io.BufferedInputStream;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.net.ServerSocket;

import java.net.Socket;

import java.util.logging.Level;

import java.util.logging.Logger;

/**

* <b>类 名:</b>Server<br/>

* <b>类描述:</b><br/>

* <b>创建人:</b>hebl<br/>

* <b>创建时间:</b>2014-10-22 上午9:45:20<br/>

* <b>修改人:</b>hebl<br/>

* <b>修改时间:</b>2014-10-22 上午9:45:20<br/>

* <b>修改备注:</b><br/>

*

* @version 1.0.0<br/>

*

*/

public class Server {

private final static Logger logger = Logger.getLogger(Server.class.getName());

public static void main(String[] args) throws IOException {

ServerSocket server = new ServerSocket(10000);//设置端口号

while (true) {

Socket socket = server.accept();// 等待服务的请求

invoke(socket);

}

}

private static void invoke(final Socket socket) throws IOException {

new Thread(new Runnable() {

public void run() {

ObjectInputStream is = null;

ObjectOutputStream os = null;

try {

is = new ObjectInputStream(new BufferedInputStream(socket.getInputStream()));

os = new ObjectOutputStream(socket.getOutputStream());

Object obj = is.readObject();

User user = (User)obj;

System.out.println("user: " + user.getUserName() + "/" + user.getPassWord());

user.setUserName(user.getUserName() + "_new");

user.setPassWord(user.getPassWord() + "_new");

os.writeObject(user);

os.flush();

} catch (IOException ex) {

logger.log(Level.SEVERE, null, ex);

} catch(ClassNotFoundException ex) {

logger.log(Level.SEVERE, null, ex);

} finally {

try {

is.close();

} catch(Exception ex) {}

try {

os.close();

} catch(Exception ex) {}

try {

socket.close();

} catch(Exception ex) {}

}

}

}).start();

}

}

客户端:

/**

* <b>项目名:</b>复习总结<br/>

* <b>包 名:</b>socket<br/>

* <b>文件名:</b>Client.java<br/>

* <b>版本信息:</b>1.0.0<br/>

* <b>日期:</b>2014-10-22-上午9:45:40<br/>

*

*/

package socket;

import java.io.BufferedInputStream;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.net.Socket;

import java.util.logging.Level;

import java.util.logging.Logger;

/**

* <b>类 名:</b>Client<br/>

* <b>类描述:</b><br/>

* <b>创建人:</b>hebl<br/>

* <b>创建时间:</b>2014-10-22 上午9:45:40<br/>

* <b>修改人:</b>hebl<br/>

* <b>修改时间:</b>2014-10-22 上午9:45:40<br/>

* <b>修改备注:</b><br/>

*

* @version 1.0.0<br/>

*

*/

public class Client {

private final static Logger logger = Logger.getLogger(Client.class.getName());

public static void main(String[] args) throws Exception {

for (int i = 0; i < 100; i++) {

Socket socket = null;

ObjectOutputStream os = null;

ObjectInputStream is = null;

try {

socket = new Socket("localhost", 10000);

os = new ObjectOutputStream(socket.getOutputStream());

User user = new User("user_" + i, "password_" + i);

os.writeObject(user);

os.flush();

is = new ObjectInputStream(new BufferedInputStream(socket.getInputStream()));

Object obj = is.readObject();

if (obj != null) {

user = (User)obj;

System.out.println("user: " + user.getUserName() + "/" + user.getPassWord());

}

} catch(IOException ex) {

logger.log(Level.SEVERE, null, ex);

} finally {

try {

is.close();

} catch(Exception ex) {}

try {

os.close();

} catch(Exception ex) {}

try {

socket.close();

} catch(Exception ex) {}

}

}

}

}

http请求:

1、get方式请求

private static String getHtml(String url) {

String urlString = url;

if (!url.startsWith("http://")) {

urlString = "http://" + url;

}

WebClient webClient;

String html = null;

webClient = new WebClient(BrowserVersion.FIREFOX_3_6);

webClient.setJavaScriptEnabled(false);

webClient.setCssEnabled(false);

webClient.setAjaxController(new NicelyResynchronizingAjaxController());

webClient.setTimeout(60000);

webClient.setThrowExceptionOnScriptError(false);

HtmlPage page;

try {

//会有类型转换错误异常

page = (HtmlPage) webClient.getPage(urlString);

html = page.asXml();

} catch (Exception e) {

System.out.println("此url不合法" + url+e);

}

return html;

}

2、post方式请求

/**

* 使用post方式发送请求

* @param url

* @param params

* @return

*/

public static Document post(String url, List<NameValuePair> params) {

// POST的URL

HttpPost httppost = new HttpPost(url);

String result = "";

// 添加参数

try {

httppost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));

// 设置编码

HttpResponse response = new DefaultHttpClient().execute(httppost);

// 发送Post,并返回一个HttpResponse对象

// Header header = response.getFirstHeader("Content-Length");

// String Length=header.getValue();

// 上面两行可以得dfkjb

if (response.getStatusLine().getStatusCode() == 200) {// 如果状态码为200,就是正常返回

result += EntityUtils.toString(response.getEntity());

// 得到返回的字符串

// 打印输出

// 如果是下载文件,可以用response.getEntity().getContent()返回InputStream

}

} catch (Exception e) {

e.printStackTrace();

}

return Jsoup.parse(result) ;

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