链接地址:http://blog.csdn.net/benweizhu/article/details/6615542

服务器端(Server)非多线程

  1. package com.zeph.serverclient;
  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.io.PrintWriter;
  6. import java.net.ServerSocket;
  7. import java.net.Socket;
  8. public class MyServer {
  9. public static void main(String[] args) throws IOException {
  10. ServerSocket server = new ServerSocket(5678);
  11. Socket client = server.accept();
  12. BufferedReader in = new BufferedReader(new InputStreamReader(
  13. client.getInputStream()));
  14. PrintWriter out = new PrintWriter(client.getOutputStream());
  15. while (true) {
  16. String str = in.readLine();
  17. System.out.println(str);
  18. out.println("has receive....");
  19. out.flush();
  20. if (str.equals("end"))
  21. break;
  22. }
  23. client.close();
  24. }
  25. }

客户端(Client)

  1. package com.zeph.serverclient;
  2. import java.io.BufferedReader;
  3. import java.io.InputStreamReader;
  4. import java.io.PrintWriter;
  5. import java.net.InetAddress;
  6. import java.net.Socket;
  7. public class MyClient {
  8. static Socket server;
  9. public static void main(String[] args) throws Exception {
  10. server = new Socket(InetAddress.getLocalHost(), 5678);
  11. BufferedReader in = new BufferedReader(new InputStreamReader(
  12. server.getInputStream()));
  13. PrintWriter out = new PrintWriter(server.getOutputStream());
  14. BufferedReader wt = new BufferedReader(new InputStreamReader(System.in));
  15. while (true) {
  16. String str = wt.readLine();
  17. out.println(str);
  18. out.flush();
  19. if (str.equals("end")) {
  20. break;
  21. }
  22. System.out.println(in.readLine());
  23. }
  24. server.close();
  25. }
  26. }

服务器端(Server)多线程

  1. package com.zeph.multiclient;
  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.io.PrintWriter;
  6. import java.net.ServerSocket;
  7. import java.net.Socket;
  8. public class MultiClient extends Thread {
  9. private Socket client;
  10. public MultiClient(Socket c) {
  11. this.client = c;
  12. }
  13. public void run() {
  14. try {
  15. BufferedReader in = new BufferedReader(new InputStreamReader(
  16. client.getInputStream()));
  17. PrintWriter out = new PrintWriter(client.getOutputStream());
  18. // Mutil User but can't parallel
  19. while (true) {
  20. String str = in.readLine();
  21. System.out.println(str);
  22. out.println("has receive....");
  23. out.flush();
  24. if (str.equals("end"))
  25. break;
  26. }
  27. client.close();
  28. } catch (IOException ex) {
  29. } finally {
  30. }
  31. }
  32. public static void main(String[] args) throws IOException {
  33. ServerSocket server = new ServerSocket(5678);
  34. while (true) {
  35. // transfer location change Single User or Multi User
  36. MultiClient mc = new MultiClient(server.accept());
  37. mc.start();
  38. }
  39. }
  40. }

测试这个代码的时候可以直接用DOS控制台上面运行,这样看的效果更清楚!

服务器基本步骤:

1.指定端口实例化一个SeverSocket

2.调用ServerSocket的accept()方法,以在等待连接期间造成阻塞

3.获取位于该底层的Socket的流以进行读写操作

4.将数据封装成流

5.对Socket进行读写

6.关闭打开的流

客户端基本步骤:

1.通过IP地址和端口实例化Socket,请求连接服务器

2.获得Socket上的流以进行读写

3.把流封装进BufferedReader/PrintWriter的实例

4.对Socket进行读写

5.关闭打开的流

Java Socket编程 标准范例(多线程)的更多相关文章

  1. 多线程Java Socket编程示例

    package org.merit.test.socket; import java.io.BufferedReader; import java.io.IOException; import jav ...

  2. 如何为可扩展系统进行Java Socket编程

    从简单I/O到异步非阻塞channel的Java Socket模型演变之旅 上世纪九十年代后期,我在一家在线视频游戏工资工作,在哪里我主要的工作就是编写Unix Unix Berkley Socket ...

  3. Java Socket编程基础篇

    原文地址:Java Socket编程----通信是这样炼成的 Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Sock ...

  4. Java Socket编程题库

    一.    填空题 ___ IP地址____用来标志网络中的一个通信实体的地址.通信实体可以是计算机,路由器等. 统一资源定位符URL是指向互联网"资源"的指针,由4部分组成:协议 ...

  5. Java Socket编程(转)

    Java Socket编程 对于Java Socket编程而言,有两个概念,一个是ServerSocket,一个是Socket.服务端和客户端之间通过Socket建立连接,之后它们就可以进行通信了.首 ...

  6. Java基础:三步学会Java Socket编程

    Java基础:三步学会Java Socket编程 http://tech.163.com 2006-04-10 09:17:18 来源: java-cn 网友评论11 条 论坛        第一步 ...

  7. socket编程,简单多线程服务端测试程序

    socket编程,简单多线程服务端测试程序 前些天重温了MSDN关于socket编程的WSAStartup.WSACleanup.socket.closesocket.bind.listen.acce ...

  8. 转:Java Socket编程

    对于Java Socket编程而言,有两个概念,一个是ServerSocket,一个是Socket.服务端和客户端之间通过Socket建立连接,之后它们就可以进行通信了.首先ServerSocket将 ...

  9. Java Socket编程详细解说

    Java Socket编程 JavaSocketServerSocket乱码超时 Java Socket编程 对于Java Socket编程而言,有两个概念,一个是ServerSocket,一个是So ...

随机推荐

  1. VS中C++代码折叠

    用VS编写C#时,可以用#region name和#endregion,将代码分段,这样可以将代码折叠起来,当类过大,方法过长时,这种方法可以提高阅读效率,是人看着更舒服. 对于C/C++语言,#re ...

  2. android 三级菜单 BaseExpandableListAdapter

    在网上搜了非常长时间.没有找到合适的Android三级菜单.所以就自己动手写了一个,主要使用了BaseExpandableList来实现,通过三个布局文件来完毕相应的菜单项,详细实现请參照下图. wa ...

  3. mysql主从切换步骤

    1>   正常切换 1)从server检查SHOW PROCESSLIST语句的输出,直到你看到Has read all relaylogwaiting for the slave I/O th ...

  4. SQLite for C#

    slqlite是个轻量级的数据库,是目前较为流行的小型数据库,适用于各个系统..NET自然也是支持的 1.添加2个引用System.Data.SQLite.Linq,System.Data.SQLit ...

  5. prototype演变

    setp1 var Person = function () {}; //构造器 var p = new Person(); setp1 演变: var Person = function () {} ...

  6. Oracle死锁。

    oracle数据库死锁一般情况下在oracle数据库中不会.但是在程序中可以开启事物没有提交,但是程序报错我们就关了程序在重新调试.但是我们程序总是在执行 comm.ExecuteNonQuery() ...

  7. Struts2拦截器总结

    拦截器的本质: 拦截器就是一个类,一个实现了超级接口Interceptor的类.Interceptor接口里定义了三个方法 init(),destory(),intercept().其中inercep ...

  8. Android webViewj简单处理apk的下载链接

    最近在开发二维码扫一扫的功能,需要分多种情况处理外部的url.遇到一个问题是,一些程序包(比如一些android应用)的下载不好处理.如果不做任何处理的话,webView会打开一个空白页.比如这个链接 ...

  9. 初识C(1)----与C基本无关的开篇

    1.啥叫编程 编程乃编写程序的简称,所以要想知道啥叫编程,首先要清楚什么是程序(Program). 普及一点计算机小知识:从根本上说,计算机是由数字电路组成的运算机器,处理的数字也仅限于0和1组成的数 ...

  10. 循环-21. 求交错序列前N项和

    /* * Main.c * C21-循环-21. 求交错序列前N项和 * Created on: 2014年8月18日 * Author: Boomkeeper ***********测试通过**** ...