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

java网络编程学习之用java编写客户/服务器程序

2014-10-15 15:47 218 查看
使用java 套接字socket编写简单的客户/服务器程序,程序实现了:在客户端输入信息,传到服务器端,再从服务器端传回信息,显示在客户端

小知识点:

如何用Eclipse运行两个进程? 答:run as之后 display selected console进行选择进程查看



看看效果(先启动服务器,再启动客户端程序)





上代码

package network;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.Buffer;
/**
* 服务器程序
* @author zx
*
*/
public class EchoServer {
private int port = 8000;
private ServerSocket serverSocket;

public EchoServer() throws IOException{
serverSocket = new ServerSocket(port);
System.out.println("服务器启动!");
}

public String echo(String msg) {
return "echo "+msg;
}

private PrintWriter getWriter(Socket socket) throws IOException{
OutputStream socketOut = socket.getOutputStream();
return new PrintWriter(socketOut,true);
}
private BufferedReader getReader(Socket socket) throws IOException{
InputStream socketIn = socket.getInputStream();
return new BufferedReader(new InputStreamReader(socketIn));

}
public void serivce() {
while(true){
Socket socket = null;
try {
socket = serverSocket.accept();//等待客户连接
System.out.println("New connection accepted"+socket.getInetAddress()+":"+socket.getPort());//获取到连接,输出信息

BufferedReader br = getReader(socket);//取得从客户端获取socket的输出信息socket.getInputStream()
PrintWriter pw = getWriter(socket);//创建输出流

String msg = null;
while((msg = br.readLine())!=null){
System.out.println(msg);
pw.println(echo(msg));
if(msg.equals("bye")){
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}finally{
if(socket!=null){
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
public static void main(String[] args) throws IOException {
new EchoServer().serivce();
}
}


package network;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;

/**
* 客户端程序
* @author
*
*/
public class EchoClient {
private String host = "localhost";
private int port = 8000;
private Socket socket;

public EchoClient() throws IOException {
socket = new Socket(host,port);
}

private PrintWriter getWriter(Socket socket) throws IOException{
OutputStream socketOut = socket.getOutputStream();
return new PrintWriter(socketOut,true);
}
private BufferedReader getReader(Socket socket) throws IOException{
InputStream socketIn = socket.getInputStream();
return new BufferedReader(new InputStreamReader(socketIn));

}
public void talk(){
try {
System.out.println("客户端启动!");
BufferedReader br = getReader(socket);
PrintWriter pw = getWriter(socket);
BufferedReader localReader = new BufferedReader(new InputStreamReader(System.in));
String msg = null;
while((msg = localReader.readLine())!=null){
pw.println(msg);
System.out.println(br.readLine());
if(msg.equals("bye")){
break;
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args) throws IOException {
new EchoClient().talk();
}
}
总结:一个简单的服务器/客户端程序 为接下来的学习打下基础!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: