链接地址: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. opennebula kvm attach disk

    openNebula hotPlug disk or nic 网络检索关键字(Network search keywords) 208.117.233.122 virsh attach disk vi ...

  2. #include <map>

    //tuple多元数组,必须是静态数组,类似结构体 //配合array,vector使用 //std::tuple<数组元素类型>数组变量名(数组元素变量名); #include < ...

  3. Root exploit for Android (adb setuid)

    /* 本文章由 莫灰灰 编写.转载请注明出处. 作者:莫灰灰    邮箱: minzhenfei@163.com */ 1. 漏洞分析 这是个非常老的漏洞了,主要利用adb启动的时候调用setuid函 ...

  4. jstack命令使用

    概述 jstack可用于导出java运用程序的线程堆栈.其基本使用语法为: jstack [-l] pid -l 选项用于打印锁的额外信息. 使用演示样例 以下这段代码执行之后会出现死锁现象(由于线程 ...

  5. asp.net弹出多个模态窗口

    asp.net中无限制弹出模态窗口 特点: 1.       可以在模态窗口上再弹出模态窗口,不限制次数 2.       弹出窗口的支持拖放,及调整大小 3.       弹出窗口关闭后可以动态控制 ...

  6. 【Winform开发2048小游戏】

    先来看一下界面: 游戏帮助类 class GameCore { //游戏地图 private int[,] map = new int[4, 4]; //合并时用到的临时数组 private int[ ...

  7. Asp.net 获取服务器指定文件夹目录文件,并提供下载

    string dirPath = HttpContext.Current.Server.MapPath("uploads/"); if (Directory.Exists(dirP ...

  8. English - 英语学习小笔记

    1.It is...to do sth:做某事是.... 解析:It 是形式主语,后面一半接形容词做表语,to do sth是不定式短语作真正主语. 2.make do和make doing是两种表达 ...

  9. 提交服务器 post get

    HttpRequest Post or Get // method --- WebRequestMethods.Http.Post 或 WebRequestMethods.Http.Get priva ...

  10. js写的简单轮播图

    这个轮播图代码是从网上找来的,专门找了个写法简单的,只是作为一个小练习,大概原理如下: 1.首先是图片切换2.自动播放3.调用自动播放4.移动到容器上边停止播放,离开自动播放5.移动到导航上停止播放, ...