java Socket编程初探_TCP
2016-03-30 14:17
471 查看
TCP 客户端
TCP 服务端
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.Socket; import java.net.UnknownHostException; public class Client { public static void main(String[] args) { // TODO Auto-generated method stub Client client = new Client(); try { client.request(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void request() throws Exception{ Socket client = new Socket("127.0.0.1", 8888); client.setSoTimeout(10*1000); //input from keyboard BufferedReader input=new BufferedReader(new InputStreamReader(System.in)); //send to server PrintStream out=new PrintStream(client.getOutputStream()); //get from server BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream())); boolean flag=true; while(flag){ System.out.println("Input:"); String tmp=input.readLine(); out.println(tmp); if(tmp.equals("bye")){ flag = !flag; } else{ String resp=in.readLine(); System.out.println("It comes from server:"+resp); } } } }
TCP 服务端
import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; import java.util.List; public class Server { static List<Socket> list; public static void main(String[] args) throws Exception { // TODO Auto-generated method stub list = new ArrayList<>(); ServerSocket server = new ServerSocket(8888); Socket client = null; boolean f=true; while(f){ client = server.accept(); System.out.println("Conn to client."); new Thread(new ServerThread(client)).start(); } server.close(); } }
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.Socket; public class ServerThread implements Runnable { private Socket client; public ServerThread(Socket client) { // TODO Auto-generated constructor stub this.client = client; Server.list.add(client); } @Override public void run() { // TODO Auto-generated method stub try { // send to client // get from client BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream())); boolean flag = true; while (flag) { String string = in.readLine(); if (string == null || string.length() == 0) { flag = false; } else { if (string.equals("bye")) { flag = !flag; } else { for (int i = 0; i < Server.list.size(); i++) { PrintStream out = new PrintStream(Server.list.get(i).getOutputStream()); out.println("echo:" + string); } } System.out.println("It comes from client:" + string); } } close(); client.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void close(){ for (int i = 0; i < Server.list.size(); i++) { try { Server.list.get(i).close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //Server.list.remove(index) } }
相关文章推荐
- HTTP/1.1
- windows中mac虚拟机网络连接
- HttpUtils
- HttpServletResponse对象
- 全栈工程师眼中的HTTP
- 网络好文章
- 自定义网络请求图片的大小
- CentOS7 网络配置
- javaweb学习总结(十)——HttpServletRequest对象(一)
- Linux网络编程简单示例
- [shell]通过ping检测整个网段IP的网络状态脚本
- python 网络爬虫入门 1
- VMware10中安装Centos网络无法使用的处理办法
- HTTP Pipeline
- linux下网络排错与查看
- linux下判断网络是否连接
- PHP cURL 返回 HTTP/1.1 100 Continue
- PHP cURL 返回 HTTP/1.1 100 Continue
- 网络编程基础(3) : IO多路复用(单线程)
- HTTP真的很简单(转)