服务器端代码(单线程):

  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.io.PrintWriter;
  5. import java.net.ServerSocket;
  6. import java.net.Socket;
  7.  
  8. public class TalkServer {
  9.  
  10. public static void main(String[] args) {
  11. ServerSocket server = null;
  12. try {
  13. server = new ServerSocket(4700);
  14. } catch (IOException e) {
  15. System.out.println("Can not listen 4700.");
  16. }
  17. Socket socket = null;
  18. try {
  19. socket = server.accept();
  20. } catch (IOException e) {
  21. e.printStackTrace();
  22. }
  23.  
  24. String line;
  25. try {
  26. BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  27. PrintWriter printWriter = new PrintWriter(socket.getOutputStream());
  28. BufferedReader sysin = new BufferedReader(new InputStreamReader(System.in));
  29. System.out.println("Client:" + reader.readLine());
  30. line = sysin.readLine();
  31. while (!line.equals("bye")) {
  32. printWriter.print(line);
  33. printWriter.flush();
  34. System.out.println("Server:" + line);
  35. System.out.println("Client:" + reader.readLine());
  36. line = sysin.readLine();
  37. }
  38. reader.close();
  39. sysin.close();
  40. printWriter.close();
  41. socket.close();
  42. server.close();
  43.  
  44. } catch (IOException e) {
  45. e.printStackTrace();
  46. }
  47.  
  48. }
  49. }

客户端代码:

  1. import java.io.BufferedReader;
  2. import java.io.InputStreamReader;
  3. import java.io.PrintWriter;
  4. import java.net.Socket;
  5.  
  6. public class TalkClient {
  7. public static void main(String[] args) {
  8. try {
  9. Socket socket = new Socket("127.0.0.1", 4700);
  10. BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  11. PrintWriter out = new PrintWriter(socket.getOutputStream());
  12. BufferedReader sysin = new BufferedReader(new InputStreamReader(System.in));
  13. String readline = sysin.readLine();
  14. while (!readline.equals("bye")) {
  15. out.println(readline);
  16. out.flush();
  17. System.out.println("Client:" + readline);
  18. System.out.println("Server:" + in.readLine());
  19. readline = sysin.readLine();
  20. }
  21. in.close();
  22. out.close();
  23. sysin.close();
  24. socket.close();
  25. } catch (Exception e) {
  26. e.printStackTrace();
  27. }
  28. }
  29. }

服务器端代码(多线程):

  1. import java.io.IOException;
  2. import java.io.PrintWriter;
  3. import java.net.ServerSocket;
  4. import java.net.Socket;
  5. import java.util.Scanner;
  6.  
  7. public class MultiEchoServer {
  8. private static ServerSocket serverSocket;
  9. private static final int PORT = 12345;
  10.  
  11. public static void main(String[] args) throws IOException {
  12. try {
  13. serverSocket = new ServerSocket(PORT);
  14. } catch (IOException e) {
  15. System.out.println("Unable connect to the port");
  16. System.exit(1);
  17. }
  18. do {
  19. Socket client = serverSocket.accept();
  20. System.out.println("New client accept...");
  21. ClientHandler clientHandler = new ClientHandler(client);
  22. clientHandler.start();
  23. } while (true);
  24. }
  25. }
  26.  
  27. class ClientHandler extends Thread {
  28. private Socket client;
  29. private Scanner input;
  30. private PrintWriter output;
  31.  
  32. public ClientHandler(Socket client) {
  33. this.client = client;
  34. try {
  35. input = new Scanner(client.getInputStream());
  36. output = new PrintWriter(client.getOutputStream(),true);
  37. } catch (IOException e) {
  38. e.printStackTrace();
  39. }
  40. }
  41.  
  42. @Override
  43. public void run() {
  44. String receive = "";
  45. do {
  46. receive = input.nextLine();
  47. System.out.println("Server receive message:" + receive);
  48. output.println("Echo:" + receive);
  49. } while (!receive.equalsIgnoreCase("q"));
  50. try {
  51. if (client != null) {
  52. System.out.println("Closing connection...");
  53. client.close();
  54. }
  55. } catch (IOException e) {
  56. System.out.println("Unable to close connection...");
  57. }
  58. }
  59. }

客户端代码:

  1. import java.io.IOException;
  2. import java.io.PrintWriter;
  3. import java.net.InetAddress;
  4. import java.net.Socket;
  5. import java.net.UnknownHostException;
  6. import java.util.Scanner;
  7.  
  8. public class MultiEchoClient {
  9. private static InetAddress host;
  10. private static final int PORT = 12345;
  11.  
  12. public static void main(String[] args) {
  13. try {
  14. host = InetAddress.getLocalHost();
  15. } catch (UnknownHostException e) {
  16. System.out.println("Host id not found!");
  17. System.exit(1);
  18. }
  19. SenderMessages();
  20. }
  21.  
  22. public static void SenderMessages() {
  23. Socket socket = null;
  24. try {
  25. socket = new Socket(host, PORT);
  26. Scanner input = new Scanner(socket.getInputStream());
  27. PrintWriter outpout = new PrintWriter(socket.getOutputStream(),true);
  28. Scanner userInput = new Scanner(System.in);
  29. String message, response;
  30. do {
  31. System.out.println("Enter Message:");
  32. message = userInput.nextLine();
  33. outpout.println(message);
  34. response = input.nextLine();
  35. System.out.println("Server " + response);
  36. } while (!message.equalsIgnoreCase("q"));
  37. input.close();
  38. userInput.close();
  39. } catch (IOException e) {
  40. e.printStackTrace();
  41. } finally {
  42. try {
  43. if (socket != null) {
  44. System.out.println("Closing connetion...");
  45. socket.close();
  46. }
  47. } catch (IOException e) {
  48. e.printStackTrace();
  49. }
  50. }
  51. }
  52.  
  53. }

socket编程---一个简单例子的更多相关文章

  1. socket编程——一个简单的例子

    从一个简单的使用TCP例子开始socket编程,其基本步骤如下: server                                                  client ++++ ...

  2. [转] 3个学习Socket编程的简单例子:TCP Server/Client, Select

    以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序.如果你能完全理解这3个例子,估计 ...

  3. java socket编程开发简单例子 与 nio非阻塞通道

    基本socket编程 1.以下只是简单例子,没有用多线程处理,只能一发一收(由于scan.nextLine()线程会进入等待状态),使用时可以根据具体项目功能进行优化处理 2.以下代码使用了1.8新特 ...

  4. socket编程——一个简单的样例

    从一个简单的使用TCP样例開始socket编程,其基本过程例如以下: server                                                  client ++ ...

  5. 用socket.io实现websocket的一个简单例子

    socket.io 是基于 webSocket 构建的跨浏览器的实时应用. 逛博客发现几个比较好的 一.用socket.io实现websocket的一个简单例子 http://biyeah.iteye ...

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

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

  7. 一个简单例子:贫血模型or领域模型

    转:一个简单例子:贫血模型or领域模型 贫血模型 我们首先用贫血模型来实现.所谓贫血模型就是模型对象之间存在完整的关联(可能存在多余的关联),但是对象除了get和set方外外几乎就没有其它的方法,整个 ...

  8. (转)Java中使用正则表达式的一个简单例子及常用正则分享

    转自:http://www.jb51.net/article/67724.htm 这篇文章主要介绍了Java中使用正则表达式的一个简单例子及常用正则分享,本文用一个验证Email的例子讲解JAVA中如 ...

  9. C语言多线程的一个简单例子

    多线程的一个简单例子: #include <stdio.h> #include <stdlib.h> #include <string.h> #include &l ...

随机推荐

  1. Regex.Match 方法

    Regex.Match 方法 在输入字符串中搜索正则表达式的匹配项,并将精确结果作为单个 Match 对象返回. 重载列表      (1) 在指定的输入字符串中搜索 Regex 构造函数中指定的正则 ...

  2. Careercup - Google面试题 - 4716965625069568

    2014-05-06 00:17 题目链接 原题: Given a -D matrix represents the room, obstacle and guard like the followi ...

  3. .NET操作JSON

    http://www.cnblogs.com/txw1958/archive/2012/08/01/csharp-json.html JSON文件读入到内存中就是字符串,.NET操作JSON就是生成与 ...

  4. 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。

    // ConsoleApplication2.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include "stdafx.h ...

  5. 并查集 基础 AC 2014-01-14 13:37 202人阅读 评论(0) 收藏

    题目地址:http://haut.openjudge.cn/20131112/6/ 求编号最多的组 查看 提交 统计 提问 总时间限制:  1000ms  内存限制:  63353kB 描述 相邻两个 ...

  6. tangent space /handness

    normal tangent bitangent 三者互相垂直. 组成一个tangent space 表示一个点 对于原本位置的偏移(扰动) 考虑到这是为了 normalmap做出虚假的normal来 ...

  7. ios开发之网络数据的下载与上传

    要实现网络数据的下载与上传,主要有三种方式 > NSURLConnection  针对少量数据,使用“GET”或“POST”方法从服务器获取数据,使用“POST”方法向服务器传输数据; > ...

  8. Unity3D 与 objective-c 之间数据交互。iOS SDK接口封装Unity3D接口

    原地址:http://www.cnblogs.com/qingjoin/p/3638915.html Unity 3D 简单工程的创建.与Xcode 导出到iOS 平台请看这 Unity3D 学习 创 ...

  9. POJ 2912 Rochambeau(难,好题,枚举+带权并查集)

    下面的是从该网站上copy过来的,稍微改了一点,给出链接:http://hi.baidu.com/nondes/item/26dd0f1a02b1e0ef5f53b1c7 题意:有N个人玩剪刀石头布, ...

  10. HDU 3461 Code Lock(并查集,合并区间,思路太难想了啊)

    完全没思路,题目也没看懂,直接参考大牛们的解法. http://www.myexception.cn/program/723825.html 题意是说有N个字母组成的密码锁,如[wersdfj],每一 ...