socket编程演示样例(多线程)
client代码例如以下:
import java.io.*; import java.net.*; import java.util.Scanner; public class SimpleChatClient { BufferedReader reader; PrintWriter writer; Socket sock; public void go(){ System.out.println("客户端启动!"); setUpNetworking(); //发送数据到server Scanner scanner=new Scanner(System.in); String sendString=scanner.nextLine(); while(sendString!=null&&!sendString.equals("byebye")){ writer.println(sendString); writer.flush(); sendString=scanner.nextLine(); } scanner.close(); System.out.println("客户端退出!"); } public void setUpNetworking(){ try { sock=new Socket("127.0.0.1",5000); InputStreamReader streamReader=new InputStreamReader(sock.getInputStream()); reader=new BufferedReader(streamReader); writer=new PrintWriter(sock.getOutputStream()); System.out.println("networking established"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) { // TODO Auto-generated method stub SimpleChatClient client=new SimpleChatClient(); client.go(); } }
server端代码例如以下:
import java.io.*; import java.net.*; public class SimpleChatServer { //内部类 public class ClientHandler implements Runnable{ BufferedReader reader; Socket sock; public ClientHandler(Socket clientSocket){ sock=clientSocket; InputStreamReader isReader; try { isReader = new InputStreamReader(sock.getInputStream()); reader=new BufferedReader(isReader); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override public void run() { // TODO Auto-generated method stub String messageString; try { while((messageString=reader.readLine())!=null){ System.out.println("read "+messageString); } } catch (IOException e) { // TODO Auto-generated catch block System.out.println("有一个连接断开"); } } } public void go(){ System.out.println("服务器启动成功!"); ServerSocket serverSock; try { serverSock = new ServerSocket(5000); while(true){ Socket clientSocket=serverSock.accept(); Thread thread=new Thread(new ClientHandler(clientSocket)); thread.start(); System.out.println("got a connection!"); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) { // TODO Auto-generated method stub new SimpleChatServer().go(); } }
相关文章
- 深入浅出Cocoa多线程编程之 block 与 dispatch quene
- python多线程,多进程编程。
- 【C/C++学院】0816-引用包装器/仿函数/转义字符 R”()”/using别名/模板元编程 比递归优化/智能指针/多线程/静态断言以及调试技能的要求 assert
- python进阶学习笔记(四)--多线程thread
- 多线程基础(七)GCD线程组+栅栏函数
- java学习笔记14--多线程编程基础1
- Java 多线程编程(2-异步中包含同步)
- C#编程总结(四)多线程应用
- 初探linux pthread多线程编程
- java juc多线程编程代码示例:ForkJoinPool
- 并发编程含义比较广泛,包含多线程编程、多进程编程及分布式程序等 目录 1. “共享内存系统”,消息传递系统”。1 1.1. 共享模式 多进程 多线程1 1.2. Actor消息模式 事件驱动2
- 【java】java 多线程编程
- 〖Python语法进阶篇②〗- 线程与多线程概述
- 在Qt(C++)中使用QThread实现多线程
- Android FFmpeg系列——C多线程使用
- python爬虫多线程编程
- Java多线程为什么使用while循环来调用wait方法
- Python编程:threading多线程
- 通过HTTP协议实现多线程下载
- python并发编程&多线程(二)
- 多线程中的信号与槽(下)
- 【Java并发编程系列】全方位理解多线程几乎包含线程的所有操作哦