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

Java(Android) Http通信

2015-06-07 23:08 337 查看
服务器端代码:

ServerSocket serverSocket=new ServerSocket(9898);//开启9898端口
Socket socket== serverSocket.accept();//等待客户端连入
//读取客户端发来的信息
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String receivedMsg=null;
while ((receivedMsg = reader.readLine()) != null) {
//对客户端发来的消息作出处理
}
//向客户端发送消息
BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
writer.write("向客户端发送的消息");
//记得用完之后要关闭端口和连接
socket.close();
serverSocket.close();


客户端代码:

Socket socket== new Socket("127.0.0.1", 9898);//连接指定ip和端口号的服务器,本机上的服务器ip为127.0.0.1
//向服务器发送数据
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
writer.write("向服务器发送的数据"+"\n");//服务器读取到换行符的时候才认为客户端发送完毕,服务器端也一样。
writer.flush();
//读取服务器端发送的数据
BufferedReader readerreader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String response=null;
while ((response = reader.readLine()) != null) {
//处理服务器发来的数据
}


服务器端可运行代码:

package com.imooc.server;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class SocketServer {

public static void main(String[] args) {
SocketServer socketServer = new SocketServer();
socketServer.startServer();
}

public void startServer() {
ServerSocket serverSocket = null;
Socket socket = null;
try {
serverSocket = new ServerSocket(9898);
System.out.println("server started..");
while (true) {
socket = serverSocket.accept();
manageConnection(socket);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
socket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

public void manageConnection(final Socket socket) {
new Thread(new Runnable() {
@Override
public void run() {
BufferedReader reader = null;
BufferedWriter writer =null;
try {
System.out.println("client " + socket.hashCode() + " connedted");
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
String receivedMsg;
while ((receivedMsg = reader.readLine()) != null) {
System.out.println("client " + socket.hashCode() + ": " + receivedMsg);
writer.write("server reply: " + receivedMsg + "\n");
writer.flush();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
reader.close();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}).start();
}

}


客户端可运行代码:

package com.imooc.client;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;

public class SocketClient {

public static void main(String[] args) {
SocketClient client = new SocketClient();
client.start();
}

public void start() {
BufferedReader inputReader = null;
BufferedReader reader = null;
BufferedWriter writer = null;
Socket socket = null;
try {
socket = new Socket("127.0.0.1", 9898);
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
inputReader = new BufferedReader(new InputStreamReader(System.in));
startServerReplyListener(reader);
String inputContent;
int count = 0;
while (!(inputContent = inputReader.readLine()).equals("bye")) {
writer.write(inputContent);
if (count % 2 ==0) {
writer.write("\n");
}
count++;
writer.flush();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
reader.close();
writer.close();
inputReader.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

public void startServerReplyListener(final BufferedReader reader) {
new Thread(new Runnable() {
@Override
public void run() {
try {
String response;
while ((response = reader.readLine()) != null) {
System.out.println(response);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}

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