1.服务端:server

  1. package com.socket;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.io.PrintWriter;
  7. import java.net.ServerSocket;
  8. import java.net.Socket;
  9.  
  10. import com.common.LogHelper;
  11.  
  12. /**
  13. * ServerSide: receive message from Client and return it.
  14. * @author Guoliang
  15. *
  16. */
  17. public class MesgServer implements Runnable{
  18.  
  19. public void run() {
  20. LogHelper.log("ServerStarted");
  21. try {
  22. ServerSocket serverSocket = new ServerSocket(8888);
  23.  
  24. while (true) {
  25.  
  26. Socket socket = serverSocket.accept();
  27. LogHelper.log("Request: " + socket.toString());
  28.  
  29. BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  30. PrintWriter out = new PrintWriter(socket.getOutputStream());
  31.  
  32. out.println("Connected!");
  33. out.flush();
  34.  
  35. String lineInput;
  36. while ((lineInput = in.readLine()) != null) {
  37. LogHelper.log("GotMesgFromClient: " + lineInput);
  38. out.println("ServerReturnMsg: " + lineInput);
  39. out.flush();
  40. if("exit".equals(lineInput)) {
  41. break;
  42. }
  43. }
  44.  
  45. out.close();
  46. in.close();
  47. socket.close();
  48. }
  49.  
  50. } catch (IOException e) {
  51. // TODO Auto-generated catch block
  52. e.printStackTrace();
  53. }
  54. }
  55.  
  56. }

2.客户端 Client

  1. package com.socket;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.io.PrintWriter;
  7. import java.net.Socket;
  8. import java.net.UnknownHostException;
  9.  
  10. import com.common.LogHelper;
  11.  
  12. public class MesgClient {
  13.  
  14. /**
  15. * Send mesg to server side.
  16. * @param args
  17. * @throws IOException
  18. * @throws UnknownHostException
  19. */
  20. public static void main(String[] args) throws UnknownHostException, IOException {
  21.  
  22. // Start server.
  23. new Thread(new MesgServer()).start();
  24.  
  25. Socket socket = new Socket("localhost", 8888);
  26. LogHelper.log("Connecting...");
  27.  
  28. PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
  29. BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  30.  
  31. LogHelper.log(in.readLine());
  32.  
  33. // Simplest testing
  34. out.println("Hello!");
  35. LogHelper.log(in.readLine());
  36.  
  37. // Read user input.
  38. BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
  39. String strInput = null;
  40. while ((strInput = stdIn.readLine()) != null) {
  41. out.println(strInput);
  42. LogHelper.log("Send: " + strInput);
  43. LogHelper.log(in.readLine());
  44. }
  45. }
  46. }

Output:

[Thread-0]ServerStarted
[main]Connecting...
[Thread-0]Request: Socket[addr=/127.0.0.1,port=5569,localport=8888]
[main]Connected!
[Thread-0]GotMesgFromClient: Hello!
[main]ServerReturnMsg: Hello!
liguoliang.com  // user input.
[Thread-0]GotMesgFromClient: liguoliang.com
[main]Send: liguoliang.com
[main]ServerReturnMsg: liguoliang.com

转自:

http://liguoliang.com/2013/java-socket-example/

Java Socket Example的更多相关文章

  1. JAVA通信系列一:Java Socket技术总结

    本文是学习java Socket整理的资料,供参考. 1       Socket通信原理 1.1     ISO七层模型 1.2     TCP/IP五层模型 应用层相当于OSI中的会话层,表示层, ...

  2. JAVA Socket 编程学习笔记(二)

    在上一篇中,使用了 java Socket+Tcp/IP  协议来实现应用程序或客户端--服务器间的实时双向通信,本篇中,将使用 UDP 协议来实现 Socket 的通信. 1. 关于UDP UDP协 ...

  3. JAVA Socket 编程学习笔记(一)

    1. Socket 通信简介及模型 Java Socket 可实现客户端--服务器间的双向实时通信.java.net包中定义的两个类socket和ServerSocket,分别用来实现双向连接的cli ...

  4. Java Socket Server的演进 (一)

    最近在看一些网络服务器的设计, 本文就从起源的角度介绍一下现代网络服务器处理并发连接的思路, 例子就用java提供的API. 1.单线程同步阻塞式服务器及操作系统API 此种是最简单的socket服务 ...

  5. JAVA Socket超时浅析

    JAVA Socket超时浅析 套接字或插座(socket)是一种软件形式的抽象,用于表达两台机器间一个连接的"终端".针对一个特定的连接,每台机器上都有一个"套接字&q ...

  6. Java Socket编程题库

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

  7. Java Socket编程(转)

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

  8. 交通银行 Java Socket 服务启动 管理 WINDOWS 版

    按照交通银行提供的无界面启动方法试验了很多次,都没有成功,所以自己动手用C# 知识写了一个. 小工具可以判断 交通银行 JAVA SOCKET 服务是否启动,并可以启动/关闭服务 主要代码如下: 判断 ...

  9. Java Socket 网络编程心跳设计概念

    Java Socket 网络编程心跳设计概念   1.一般是用来判断对方(设备,进程或其它网元)是否正常动行,一 般采用定时发送简单的通讯包,如果在指定时间段内未收到对方响应,则判断对方已经当掉.用于 ...

  10. JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求

    JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求 哇,一看标题怎么这么长啊,其实意思很简单,哥讨厌用HTTP Client做POST与GET提交 觉得那个毕竟是别人写 ...

随机推荐

  1. cocos2d-x 3.0 final 中文显示

    cocos2d-x 3.0的中文显示非常easy,首先,你须要一个xml文件保存中文,还须要一个能显示中文的TTF文件 <?xml version="1.0" encodin ...

  2. DateTime格式大全

    DateTime dt = DateTime.Now;//    Label1.Text = dt.ToString();//2005-11-5 13:21:25//    Label2.Text = ...

  3. 为Android GridView 设置行背景

    经常有这样的需求,你的功能图标要像一个个物品,摆放在书架上,像这样: 我的思路比较简单,重载GridView,在他绘制子视图前,先把背景绘制完成 1 2 3 4 5 6 7 8 9 10 11 12 ...

  4. ThinkPHP 中M方法和D方法的具体区别(转)

    M方法和D方法的区别 ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类. 使用M方法 如果是如下情况,请考虑使用 ...

  5. change buffer

    https://yq.aliyun.com/articles/222 change buffer: insert buffer delete buffer purge buffer 1.innodb_ ...

  6. python re

    >>> url="http://apk.gfan.com/Product/App45021.html" >>> result=html.cont ...

  7. Android 根据屏幕分辨率自动调整字体大小

    1.在oncreate 里获取手机屏幕宽和高度 DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDispl ...

  8. HTML简单介绍及常见元素

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  9. 怎样写好一份IT技术岗位的简历

    10月是校园招聘的旺季,很多应届毕业生都忙碌起来了,从CSDN笔试-面试文章的火热程度,从我收到的简历就看得出来. 我很久没有参与笔试和面试了,所以只能从“简历”来阐述下我的看法. 截至目前,已经帮8 ...

  10. 转换字符串格式,可用于sql in

    /// <summary> /// 转换字符串格式,可用于sql in /// </summary> /// <param name="lst"> ...