java网络编程学习之用java编写客户/服务器程序
2014-10-15 15:47
218 查看
使用java 套接字socket编写简单的客户/服务器程序,程序实现了:在客户端输入信息,传到服务器端,再从服务器端传回信息,显示在客户端
小知识点:
如何用Eclipse运行两个进程? 答:run as之后 display selected console进行选择进程查看
看看效果(先启动服务器,再启动客户端程序)
上代码
小知识点:
如何用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(); } }总结:一个简单的服务器/客户端程序 为接下来的学习打下基础!
相关文章推荐
- Java网络学习笔记1:用(Server)Socket编写简单的客户/服务器程序
- java学习之网络编程之echo程序
- Java网络编程学习笔记(1)用java编写客户端/服务器程序(简易)
- java 网络编程【6】 用UDP编写网络聊天程序 以及 TCP编程实例
- java学习之利用UDP编写网络聊天程序
- Java基础---Java---网络编程---TCP的传输、客户端和服务端的互访、建立一个文本转换器、编写一个聊天程序
- Java基础---Java---网络编程---TCP的传输、客户端和服务端的互访、建立一个文本转换器、编写一个聊天程序
- 利用java编写网络通信程序
- 使用JAVA编写网络通信程序
- Java 网络编程 学习
- 如何使用Java编写多线程程序-Java基础-Java-编程开发
- 编写跨平台Java程序注意事项-Java基础-Java-编程开发
- 利用java编写网络通信程序
- 用java编写简单UDP网络通信程序
- 使用JAVA编写网络通信程序
- 编写高效的JAVA程序-编程规范 (基本篇 )
- 利用java编写网络通信程序
- 使用JAVA编写网络通信程序
- Java 学习笔记 (7) - GUI编程之Java小程序 Applet
- 编写高效的JAVA程序-编程规范 (中级篇 )