Java Socket编程 标准范例(多线程)

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

服务器端(Server)非多线程

[java] view plain copy

  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)

[java] view plain copy

  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)多线程

[java] view plain copy

  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.关闭打开的流

时间: 2024-08-05 07:07:29

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

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

从简单I/O到异步非阻塞channel的Java Socket模型演变之旅 上世纪九十年代后期,我在一家在线视频游戏工资工作,在哪里我主要的工作就是编写Unix Unix Berkley Socket和Windows WinSock代码.我的任务是确保视频游戏客户端和一个游戏服务器通信.很幸运有这样的机会写一些Java Socket代码,我对Java流式网络编程和简洁明了的API着迷.这一点都不让人惊讶,Java最初就是设计促进智能设备之间的通信,这一点很好的转移到了桌面应用和服务器应用. 19

Java Socket编程基础篇

原文地址:Java Socket编程----通信是这样炼成的 Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket.像大家熟悉的QQ.MSN都使用了Socket相关的技术.下面就让我们一起揭开Socket的神秘面纱. Socket编程 网络基础知识点: 两台计算机间进行通讯需要以下三个条件 IP地址.协议.端口号: IP地址:定位应用所在机器的网络位置.(比如家庭住址:北京市朝阳区XX街道XX小区) 端口号

Java Socket编程

对于Java Socket编程而言,有两个概念,一个是ServerSocket,一个是Socket.服务端和客户端之间通过Socket建立连接,之后它们就可以进行通信了.首先ServerSocket将在服务端监听某个端口,当发现客户端有Socket来试图连接它时,它会accept该Socket的连接请求,同时在服务端建立一个对应的Socket与之进行通信.这样就有两个Socket了,客户端和服务端各一个. 客户端写服务端读 服务端代码 public class Server { public s

Java Socket编程readLine返回null,read返回-1的条件

客户端正常关闭socket的时候,服务器端的readLine()方法会返回null,或者read()方法会返回-1 Java Socket编程readLine返回null,read返回-1的条件,布布扣,bubuko.com

【转】Java Socket编程

原文地址:Java Socket编程 Java Socket编程 对于Java Socket编程而言,有两个概念,一个是ServerSocket,一个是Socket.服务端和客户端之间通过Socket建立连接,之后它们就可以进行通信了.首先ServerSocket将在服务端监听某个端口,当发现客户端有Socket来试图连接它时,它会accept该Socket的连接请求,同时在服务端建立一个对应的Socket与之进行通信.这样就有两个Socket了,客户端和服务端各一个. 对于Socket之间的通

【Java】Java Socket编程(1)基本的术语和概念

计算机程序能够相互联网,相互通讯,这使一切都成为可能,这也是当今互联网存在的基础.那么程序是如何通过网络相互通信的呢?这就是我记录这系列的笔记的原因.Java语言从一开始就是为了互联网而设计的,它为实现程序的相互通信提供了许多有用API,这类应用编程接口被称为套接字(Socket).在开始学习Java Socket之前我们需要先来了解一下基本的术语和概念. 1.计算机网络 计算机网络由一组通过通信信道(Communication channel)相互连接的机器组成.这些机器被称为:主机(host

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

socket编程,简单多线程服务端测试程序 前些天重温了MSDN关于socket编程的WSAStartup.WSACleanup.socket.closesocket.bind.listen.accept.recv.send等函数的介绍,今天写了一个CUI界面的测试程序(依赖MFC)作为补充.程序功能简介如下: 1:一个线程做监听用. 2:监听线程收到客户端连接后,创建新线程接收客户端数据.所有对客户端线程将加入容器,以便管理. 3:服务端打印所有客户端发来的信息. 4:服务端CUI界面输入数字

Java Socket编程详细解说

Java Socket编程 JavaSocketServerSocket乱码超时 Java Socket编程 对于Java Socket编程而言,有两个概念,一个是ServerSocket,一个是Socket.服务端和客户端之间通过Socket建立连接,之后它们就可以进行通信了.首先ServerSocket将在服务端监听某个端口,当发现客户端有Socket来试图连接它时,它会accept该Socket的连接请求,同时在服务端建立一个对应的Socket与之进行通信.这样就有两个Socket了,客户

20182332 实验四《Java Socket编程 》实验报告

20182332 实验肆<数据结构与面向对象程序设计>实验报告 课程:<程序设计与数据结构> 班级: 1823 姓名: 盛国榕 学号:20182332 实验教师:王志强 实验日期:2019年9月30日 必修/选修: 必修 1.实验内容 (一)Java Socket编程 1.学习蓝墨云上教材<Java和Android编程>"第16章 输入/输出 "和"第22章 网络",学习JavaSocket编程 2.结对编程.结对伙伴A编写客户端