1. package com.imooc;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.io.InputStreamReader;
  7. import java.io.OutputStream;
  8. import java.io.PrintWriter;
  9. import java.net.Socket;
  10. import java.net.UnknownHostException;
  11.  
  12. /*
  13. * 客户端
  14. */
  15. public class Client {
  16. public static void main(String[] args) {
  17. try {
  18. //1.创建客户端Socket,指定服务器地址和端口
  19. Socket socket=new Socket("localhost", 8888);
  20. //2.获取输出流,向服务器端发送信息
  21. OutputStream os=socket.getOutputStream();//字节输出流
  22. PrintWriter pw=new PrintWriter(os);//将输出流包装为打印流
  23. pw.write("用户名:alice;密码:789");
  24. pw.flush();
  25. socket.shutdownOutput();//关闭输出流
  26. //3.获取输入流,并读取服务器端的响应信息
  27. InputStream is=socket.getInputStream();
  28. BufferedReader br=new BufferedReader(new InputStreamReader(is));
  29. String info=null;
  30. while((info=br.readLine())!=null){
  31. System.out.println("我是客户端,服务器说:"+info);
  32. }
  33. //4.关闭资源
  34. br.close();
  35. is.close();
  36. pw.close();
  37. os.close();
  38. socket.close();
  39. } catch (UnknownHostException e) {
  40. e.printStackTrace();
  41. } catch (IOException e) {
  42. e.printStackTrace();
  43. }
  44. }
  45. }
  1. package com.imooc;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.io.InputStreamReader;
  7. import java.io.OutputStream;
  8. import java.io.PrintWriter;
  9. import java.net.InetAddress;
  10. import java.net.ServerSocket;
  11. import java.net.Socket;
  12.  
  13. /*
  14. * 基于TCP协议的Socket通信,实现用户登陆
  15. * 服务器端
  16. */
  17. public class Server {
  18. public static void main(String[] args) {
  19. try {
  20. //1.创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口
  21. ServerSocket serverSocket=new ServerSocket(8888);
  22. Socket socket=null;
  23. //记录客户端的数量
  24. int count=0;
  25. System.out.println("***服务器即将启动,等待客户端的连接***");
  26. //循环监听等待客户端的连接
  27. while(true){
  28. //调用accept()方法开始监听,等待客户端的连接
  29. socket=serverSocket.accept();
  30. //创建一个新的线程
  31. ServerThread serverThread=new ServerThread(socket);
  32. //启动线程
  33. serverThread.start();
  34.  
  35. count++;//统计客户端的数量
  36. System.out.println("客户端的数量:"+count);
  37. InetAddress address=socket.getInetAddress();
  38. System.out.println("当前客户端的IP:"+address.getHostAddress());
  39. }
  40. } catch (IOException e) {
  41. e.printStackTrace();
  42. }
  43. }
  44. }
  1. package com.imooc;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.io.InputStreamReader;
  7. import java.io.OutputStream;
  8. import java.io.PrintWriter;
  9. import java.net.Socket;
  10.  
  11. /*
  12. * 服务器线程处理类
  13. */
  14. public class ServerThread extends Thread {
  15. // 和本线程相关的Socket
  16. Socket socket = null;
  17.  
  18. public ServerThread(Socket socket) {
  19. this.socket = socket;
  20. }
  21.  
  22. //线程执行的操作,响应客户端的请求
  23. public void run(){
  24. InputStream is=null;
  25. InputStreamReader isr=null;
  26. BufferedReader br=null;
  27. OutputStream os=null;
  28. PrintWriter pw=null;
  29. try {
  30. //获取输入流,并读取客户端信息
  31. is = socket.getInputStream();
  32. isr = new InputStreamReader(is);
  33. br = new BufferedReader(isr);
  34. String info=null;
  35. while((info=br.readLine())!=null){//循环读取客户端的信息
  36. System.out.println("我是服务器,客户端说:"+info);
  37. }
  38. socket.shutdownInput();//关闭输入流
  39. //获取输出流,响应客户端的请求
  40. os = socket.getOutputStream();
  41. pw = new PrintWriter(os);
  42. pw.write("欢迎您!");
  43. pw.flush();//调用flush()方法将缓冲输出
  44. } catch (IOException e) {
  45. // TODO Auto-generated catch block
  46. e.printStackTrace();
  47. }finally{
  48. //关闭资源
  49. try {
  50. if(pw!=null)
  51. pw.close();
  52. if(os!=null)
  53. os.close();
  54. if(br!=null)
  55. br.close();
  56. if(isr!=null)
  57. isr.close();
  58. if(is!=null)
  59. is.close();
  60. if(socket!=null)
  61. socket.close();
  62. } catch (IOException e) {
  63. e.printStackTrace();
  64. }
  65. }
  66. }
  67. }

Socket通信类的更多相关文章

  1. php socket通信演示以及socket操作类

    准备做Java的课程设计,一个通讯录.采用C/S架构.客户端用java FX和Java,服务器端用php,采用socket通信. 下面来讲一讲php的socket通信: 讲之前,得先讲一下TCP/IP ...

  2. 我看不下去鸟。。。。Java和C#的socket通信真的简单吗?

    这几天在博客园上看到好几个写Java和C#的socket通信的帖子.但是都为指出其中关键点. C# socket通信组件有很多,在vs 使用nuget搜索socket组件有很多类似的.本人使用的是自己 ...

  3. AgileEAS.NET SOA 中间件平台.Net Socket通信框架-介绍

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  4. socket通信

    socket通信 一:socket基于Tcp连接,数据传输有保证 二:socket连接的建立过程: 1:服务器监听 2:客户端发出请求 3:建立连接 4:通信 三:一个简单的例子:服务器端每隔一段时间 ...

  5. Android之Socket通信、List加载更多、Spinner下拉列表

    Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务 ...

  6. .NET开源高性能Socket通信中间件Helios介绍及演示

    一:Helios是什么 Helios是一套高性能的Socket通信中间件,使用C#编写.Helios的开发受到Netty的启发,使用非阻塞的事件驱动模型架构来实现高并发高吞吐量.Helios为我们大大 ...

  7. iOS开发之Socket通信实战--Request请求数据包编码模块

    实际上在iOS很多应用开发中,大部分用的网络通信都是http/https协议,除非有特殊的需求会用到Socket网络协议进行网络数 据传输,这时候在iOS客户端就需要很好的第三方CocoaAsyncS ...

  8. AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答

    一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...

  9. C# socket通信

    最近在研究socket,今天看到很好的一篇关于socket通信的文章,故收藏了,慢慢琢磨. 我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念: 1.TCP/IP层次模型 当然这里 ...

随机推荐

  1. VS2015 Update2中有关cordova和xamarin安装的问题

    最近VS2015出了Update2,当然是第一时间进行了安装,中间过程曲折,反复安装卸载n次,也算是获得了一定的安装经验值.现在说一下经常出的问题. Update2里最吸引人的当然是跨平台开发的部分, ...

  2. asp.net结合uploadify实现多附件上传

    1.说明 uploadify是一款优秀jQuery插件,主要功能是批量上传文件.大多数同学对多附件上传感到棘手,现将asp.net结合uploadfiy如何实现批量上传附件给大家讲解一下,有什么不对的 ...

  3. 阅读微信支付demo收获

       1,公司现有系统有很多,存放重要接口的日志分布在不同的库,每个系统都有单独的日志采集表,日志采集模块:        ????         这些日志可以统一放到一个地方,通过一个组件提供出去 ...

  4. python学习笔记(基础一:'hello world'、变量、字符编码)

    第一个python程序: Hello World程序 windows命令行中输入:python,进入python交互器,也可以称为解释器. print("Hello World!" ...

  5. 手游聚合SDK开发之远程开关---渠道登入白名单

    白名单有啥好说的呢?无非就是筛选登入,大家第一眼看到就是这个印象,白名单也是有文章的,弄的时机不同会给你带来很不错的收益,注意是收益.还是举例来说,游戏上线前渠道都会做一个预下载,一般提前1-2天,这 ...

  6. Atitit.兼具兼容性和扩展性的配置方案attilax总结

    Atitit.兼具兼容性和扩展性的配置方案attilax总结 文件配置法1 Jdbc多数据源文件配置发1 Bat文件配置法1 改进的文件配置法(采用类似i18n技术) 推荐1 使用自动化pc_id的方 ...

  7. css和@import区别用法

    css和@import都是调用外部样式表的方法. 一.用法 (1)link: <link rel="stylesheet" type="text/css" ...

  8. [IOS 开发] NSDateFormatter的格式字符串 -- 《整理的笔记》

    在ios开发中, OBjective-C中的NSDate是一个挺讨厌的类型, 自己找不到转换成字符串的类型,还得带一个NSDateFormatter的类型. 官方文档上对NSDateFormatter ...

  9. ISP路由表分发中的AS与BGP

    ➠更多技术干货请戳:听云博客 摘要 本文面向,初级网络工程师,数据挖掘工程师,涉及EGP(外部网关协议; Exterior Gateway Protocol),IGP(内部网关协议; Interior ...

  10. 使用parted给大于2T的磁盘分区

    1.使用命令parted /dev/sdb [root@server ~]# parted /dev/sdb GNU Parted 2.1 使用 /dev/sdb Welcome to GNU Par ...