Socket通信类
- package com.imooc;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.OutputStream;
- import java.io.PrintWriter;
- import java.net.Socket;
- import java.net.UnknownHostException;
- /*
- * 客户端
- */
- public class Client {
- public static void main(String[] args) {
- try {
- //1.创建客户端Socket,指定服务器地址和端口
- Socket socket=new Socket("localhost", 8888);
- //2.获取输出流,向服务器端发送信息
- OutputStream os=socket.getOutputStream();//字节输出流
- PrintWriter pw=new PrintWriter(os);//将输出流包装为打印流
- pw.write("用户名:alice;密码:789");
- pw.flush();
- socket.shutdownOutput();//关闭输出流
- //3.获取输入流,并读取服务器端的响应信息
- InputStream is=socket.getInputStream();
- BufferedReader br=new BufferedReader(new InputStreamReader(is));
- String info=null;
- while((info=br.readLine())!=null){
- System.out.println("我是客户端,服务器说:"+info);
- }
- //4.关闭资源
- br.close();
- is.close();
- pw.close();
- os.close();
- socket.close();
- } catch (UnknownHostException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- package com.imooc;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.OutputStream;
- import java.io.PrintWriter;
- import java.net.InetAddress;
- import java.net.ServerSocket;
- import java.net.Socket;
- /*
- * 基于TCP协议的Socket通信,实现用户登陆
- * 服务器端
- */
- public class Server {
- public static void main(String[] args) {
- try {
- //1.创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口
- ServerSocket serverSocket=new ServerSocket(8888);
- Socket socket=null;
- //记录客户端的数量
- int count=0;
- System.out.println("***服务器即将启动,等待客户端的连接***");
- //循环监听等待客户端的连接
- while(true){
- //调用accept()方法开始监听,等待客户端的连接
- socket=serverSocket.accept();
- //创建一个新的线程
- ServerThread serverThread=new ServerThread(socket);
- //启动线程
- serverThread.start();
- count++;//统计客户端的数量
- System.out.println("客户端的数量:"+count);
- InetAddress address=socket.getInetAddress();
- System.out.println("当前客户端的IP:"+address.getHostAddress());
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- package com.imooc;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.OutputStream;
- import java.io.PrintWriter;
- import java.net.Socket;
- /*
- * 服务器线程处理类
- */
- public class ServerThread extends Thread {
- // 和本线程相关的Socket
- Socket socket = null;
- public ServerThread(Socket socket) {
- this.socket = socket;
- }
- //线程执行的操作,响应客户端的请求
- public void run(){
- InputStream is=null;
- InputStreamReader isr=null;
- BufferedReader br=null;
- OutputStream os=null;
- PrintWriter pw=null;
- try {
- //获取输入流,并读取客户端信息
- is = socket.getInputStream();
- isr = new InputStreamReader(is);
- br = new BufferedReader(isr);
- String info=null;
- while((info=br.readLine())!=null){//循环读取客户端的信息
- System.out.println("我是服务器,客户端说:"+info);
- }
- socket.shutdownInput();//关闭输入流
- //获取输出流,响应客户端的请求
- os = socket.getOutputStream();
- pw = new PrintWriter(os);
- pw.write("欢迎您!");
- pw.flush();//调用flush()方法将缓冲输出
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }finally{
- //关闭资源
- try {
- if(pw!=null)
- pw.close();
- if(os!=null)
- os.close();
- if(br!=null)
- br.close();
- if(isr!=null)
- isr.close();
- if(is!=null)
- is.close();
- if(socket!=null)
- socket.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
Socket通信类的更多相关文章
- php socket通信演示以及socket操作类
准备做Java的课程设计,一个通讯录.采用C/S架构.客户端用java FX和Java,服务器端用php,采用socket通信. 下面来讲一讲php的socket通信: 讲之前,得先讲一下TCP/IP ...
- 我看不下去鸟。。。。Java和C#的socket通信真的简单吗?
这几天在博客园上看到好几个写Java和C#的socket通信的帖子.但是都为指出其中关键点. C# socket通信组件有很多,在vs 使用nuget搜索socket组件有很多类似的.本人使用的是自己 ...
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-介绍
一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...
- socket通信
socket通信 一:socket基于Tcp连接,数据传输有保证 二:socket连接的建立过程: 1:服务器监听 2:客户端发出请求 3:建立连接 4:通信 三:一个简单的例子:服务器端每隔一段时间 ...
- Android之Socket通信、List加载更多、Spinner下拉列表
Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务 ...
- .NET开源高性能Socket通信中间件Helios介绍及演示
一:Helios是什么 Helios是一套高性能的Socket通信中间件,使用C#编写.Helios的开发受到Netty的启发,使用非阻塞的事件驱动模型架构来实现高并发高吞吐量.Helios为我们大大 ...
- iOS开发之Socket通信实战--Request请求数据包编码模块
实际上在iOS很多应用开发中,大部分用的网络通信都是http/https协议,除非有特殊的需求会用到Socket网络协议进行网络数 据传输,这时候在iOS客户端就需要很好的第三方CocoaAsyncS ...
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答
一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...
- C# socket通信
最近在研究socket,今天看到很好的一篇关于socket通信的文章,故收藏了,慢慢琢磨. 我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念: 1.TCP/IP层次模型 当然这里 ...
随机推荐
- VS2015 Update2中有关cordova和xamarin安装的问题
最近VS2015出了Update2,当然是第一时间进行了安装,中间过程曲折,反复安装卸载n次,也算是获得了一定的安装经验值.现在说一下经常出的问题. Update2里最吸引人的当然是跨平台开发的部分, ...
- asp.net结合uploadify实现多附件上传
1.说明 uploadify是一款优秀jQuery插件,主要功能是批量上传文件.大多数同学对多附件上传感到棘手,现将asp.net结合uploadfiy如何实现批量上传附件给大家讲解一下,有什么不对的 ...
- 阅读微信支付demo收获
1,公司现有系统有很多,存放重要接口的日志分布在不同的库,每个系统都有单独的日志采集表,日志采集模块: ???? 这些日志可以统一放到一个地方,通过一个组件提供出去 ...
- python学习笔记(基础一:'hello world'、变量、字符编码)
第一个python程序: Hello World程序 windows命令行中输入:python,进入python交互器,也可以称为解释器. print("Hello World!" ...
- 手游聚合SDK开发之远程开关---渠道登入白名单
白名单有啥好说的呢?无非就是筛选登入,大家第一眼看到就是这个印象,白名单也是有文章的,弄的时机不同会给你带来很不错的收益,注意是收益.还是举例来说,游戏上线前渠道都会做一个预下载,一般提前1-2天,这 ...
- Atitit.兼具兼容性和扩展性的配置方案attilax总结
Atitit.兼具兼容性和扩展性的配置方案attilax总结 文件配置法1 Jdbc多数据源文件配置发1 Bat文件配置法1 改进的文件配置法(采用类似i18n技术) 推荐1 使用自动化pc_id的方 ...
- css和@import区别用法
css和@import都是调用外部样式表的方法. 一.用法 (1)link: <link rel="stylesheet" type="text/css" ...
- [IOS 开发] NSDateFormatter的格式字符串 -- 《整理的笔记》
在ios开发中, OBjective-C中的NSDate是一个挺讨厌的类型, 自己找不到转换成字符串的类型,还得带一个NSDateFormatter的类型. 官方文档上对NSDateFormatter ...
- ISP路由表分发中的AS与BGP
➠更多技术干货请戳:听云博客 摘要 本文面向,初级网络工程师,数据挖掘工程师,涉及EGP(外部网关协议; Exterior Gateway Protocol),IGP(内部网关协议; Interior ...
- 使用parted给大于2T的磁盘分区
1.使用命令parted /dev/sdb [root@server ~]# parted /dev/sdb GNU Parted 2.1 使用 /dev/sdb Welcome to GNU Par ...