Socket编程基本概念----imooc(2)
来源:互联网 发布:mac root mima 编辑:程序博客网 时间:2024/05/20 03:38
Socket编程2
@(JAVA)[socket, java]
Socket编程基本概念—-imooc(1)
Socket编程基本概念—-imooc(2)
Socket编程基本概念—-imooc(3)
- Socket编程2
- 使用多线程实现客户端的通信
使用多线程实现客户端的通信
- 上一篇最后实现了一个服务端和客户端之间的简单交流,这次要给服务端中加入多线程,可以接受很多个客户的消息,并记录其IP,和人数
服务端(中间的代码提取到了多线程类中(第三段代码))
package imooc.socket;import java.io.*;import java.net.InetAddress;import java.net.ServerSocket;import java.net.Socket;/** * Created by zhangzexiang on 2016/9/17. * * 编程实现基于TCP的Socket通信,实现用户登录 * * 服务器端 */public class Server { public static void main(String[] args){ try { //1 创建一个服务器段的Socket,即ServerSocket,指定绑定的端口,并监听此端口 ServerSocket serverSocket = new ServerSocket(8888); Socket socket = null; //record client number int count = 0; System.out.println("***server is beginning,wait client ***"); while (true) { //2 调用accept()方法开始监听,等待客户端的连接 socket = serverSocket.accept(); //create a new thread ServerThread serverThread = new ServerThread(socket); //start thread serverThread.start(); //多线程类(第三段代码) count++; //统计客户端的数量 System.out.println("client number: "+count); InetAddress address = socket.getInetAddress(); System.out.println("current client ip : "+address.getHostAddress()); } } catch (IOException e) { e.printStackTrace(); } }}
客户端(基本没变)
package imooc.socket;import java.io.*;import java.net.Socket;/** * Created by zhangzexiang on 2016/9/17. * * * 编程实现基于TCP的Socket通信,实现用户登录 * * 客户端 */public class Client { public static void main(String[] args) { try { //1 创建客户端Socket,指定服务器地址和端口 Socket socket = new Socket("localhost",8888); //2 换取输出流,向服务器端发送信息 OutputStream os = socket.getOutputStream();//字节输出流 PrintWriter pw = new PrintWriter(os); //将输出流包装为打印流 pw.write("username:admin;password:123"); pw.flush(); socket.shutdownOutput();//colse outputStream //3 获取输入流,并读取服务器端的相应消息 InputStream is =socket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String info = null; while((info=br.readLine())!=null){//循环读取服务端的信息 System.out.println("我是客户端,服务器说:"+info); } //4 colse resource br.close(); is.close(); pw.close(); os.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } }}
多线程(服务端用到)
package imooc.socket;import java.io.*;import java.net.Socket;/** * Created by zhangzexiang on 2016/9/19. * * 服务器线程处理类 */public class ServerThread extends Thread{ //和本线程相关的Socket Socket socket = null; public ServerThread(Socket socket){ this.socket = socket; } //线程执行的操作,相应客户端的请求 public void run(){ InputStream is = null;//字节输入流 InputStreamReader isr = null;//将字节流转换为字符流 BufferedReader br = null;//为输入流添加缓冲 OutputStream os = null; PrintWriter pw = null; //包装为打印流 try { //3 获取输入流,并读取客户端信息 is = socket.getInputStream(); isr = new InputStreamReader(is); br = new BufferedReader(isr); String info = null; while((info=br.readLine())!=null){//循环读取客户端的信息 System.out.println("我是服务器,客户端说:"+info); } socket.shutdownInput();//关闭输入流 //4 获取输出流,响应客户端的请求 os = socket.getOutputStream(); pw = new PrintWriter(os); pw.write("welcome!"); pw.flush();//调用flush()方法将缓冲输出 } catch (IOException e) { e.printStackTrace(); } finally { try { //5 关闭资源 if(pw!=null) pw.close(); if(os!=null) os.close(); if(br!=null) br.close(); if(isr!=null) isr.close(); if(is!=null) is.close(); if(socket!=null) socket.close(); } catch (IOException e) { e.printStackTrace(); } } }}
运行结果(是用一个用户来模拟多个用户,所以IP一样,但是IP为啥是127.0.0.1呢???)
***server is beginning,wait client ***client number: 1current client ip : 127.0.0.1我是服务器,客户端说:username:admin;password:123client number: 2current client ip : 127.0.0.1我是服务器,客户端说:username:admin;password:123
0 0
- Socket编程基本概念----imooc(2)
- Socket编程基本概念----imooc(1)
- Socket编程基本概念----imooc(3)
- socket网络编程(1)-socket基本概念
- socket编程--socket基本概念
- socket编程--socket基本概念
- Beej网络socket编程指南——基本概念(2)
- 软件测试基本概念-IMOOC笔记
- Java Socket编程(一) Socket编程原理及基本概念
- 网络编程 ——socket基本概念
- 初遇SOCKET套接字(socket基本概念)
- socket基本概念解析(zz)
- (1)网络编程的基本概念和简单的socket通信
- Socket编程原理(2)
- Flash Socket 编程(2)
- PHP Socket编程(2)
- socket编程复习(2)
- 初遇SOCKET套接字(网络基本概念)
- python使用多进程或者多线程
- 电路设计_为什么晶振的频率是32.768kHz?
- 【OpenGL】理解glClear函数
- Leetcode 13. Roman to Integer & 12. Integer to Roman
- BlueMix cf push error
- Socket编程基本概念----imooc(2)
- Dubbo架构设计详解
- 工具类与工具函数(一)—— NextPrime
- 【58.75%】【BZOJ 1087】[SCOI2005]互不侵犯King
- github---新手教程
- 前端开发布局技巧汇总
- Linux-awk及内置变量
- Socket编程基本概念----imooc(3)
- UVa1583