Java Socket通信代码片
package zhang; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.Socket; /** * 服务器端的线程处理 * */ public class ServerThread extends Thread { Socket socket=null; //和本线程相关的socket /** * 构造方法 * */ public ServerThread(Socket socket){ this.socket=socket; } /** * 执行线程操作响应客户端的请求 * */ public void run(){ InputStream is=null; InputStreamReader isr=null; BufferedReader br=null; OutputStream os=null; OutputStreamWriter osw=null; BufferedWriter bw=null; //获取输入流,并读取客户端消息 try { is=socket.getInputStream(); isr=new InputStreamReader(is); br=new BufferedReader(isr); String content; while((content=br.readLine())!=null){ System.out.println(content); } socket.shutdownInput(); os=socket.getOutputStream(); osw=new OutputStreamWriter(os); bw=new BufferedWriter(osw); bw.write("欢迎您!"); bw.flush(); socket.shutdownOutput(); } catch (IOException e) { e.printStackTrace(); } //关闭资源 finally{ try { if(br!=null)br.close(); if(isr!=null) isr.close(); if(is!=null) is.close(); if(os!=null) os.close(); if(osw!=null) osw.close(); if(bw!=null) bw.close(); } catch (IOException e) { e.printStackTrace(); } } } }
package zhang; import java.io.IOException; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; import org.apache.log4j.Logger; public class Server { static Logger logger=Logger.getLogger("Server"); public static void main(String[] args) { ServerSocket server=null; try { server=new ServerSocket(8887); System.out.println(server.getInetAddress()); int count=0; //客户端连接的个数 System.out.println("服务器已启动,等待客户端的连接..."); Socket socket=null; while(true){ socket=server.accept(); ServerThread serverthread=new ServerThread(socket); serverthread.start(); count++; System.out.println("客户端的数量为:"+count); InetAddress address=socket.getInetAddress(); System.out.println(address); } } catch (IOException e) { e.printStackTrace(); logger.debug("异常:"+e.getMessage()); } finally{ if(server!=null){ try { server.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }
package zhang; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.Socket; import java.net.UnknownHostException; public class Client { public static void main(String[] args) { try { //创建连接服务器的套接字 Socket socket=new Socket("127.0.0.1",8887); //向服务器发送信息 OutputStream os=socket.getOutputStream(); OutputStreamWriter osw=new OutputStreamWriter(os); BufferedWriter bw=new BufferedWriter(osw); bw.write("服务器你好,我是客户端..."); bw.flush(); //关闭输出流 socket.shutdownOutput(); InputStream is= socket.getInputStream(); InputStreamReader isr=new InputStreamReader(is); BufferedReader br=new BufferedReader(isr); String content; while((content=br.readLine())!=null){ System.out.println("来自服务器的响应:"+content); } //关闭资源 bw.close(); osw.close(); socket.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
先启动服务端:
服务端输出:
0.0.0.0/0.0.0.0
服务器已启动,等待客户端的连接...
再启动客户端:
客户端输出:
来自服务器的响应:欢迎您!
服务端输出:
0.0.0.0/0.0.0.0
服务器已启动,等待客户端的连接...
客户端的数量为:1
/127.0.0.1
服务器你好,我是客户端...
Java Socket通信代码片的更多相关文章
- Java Socket通信读取相关信息代码
转自:http://developer.51cto.com/art/201003/190206.htm Java Socket通信读取有不少需要我们注意的知识点.当我们在使用的时候有很多的问题摆在我们 ...
- java Socket通信使用BufferedReader和BufferedWriter的注意事项
注意事项:readLine()要求有换行标识,write()要输出换行标识,要调用flush()刷新缓冲区. 以下是取自java socket通信中的一小段代码. BufferedReader rea ...
- java socket通信-传输文件图片--传输图片
ClientTcpSend.java client发送类 package com.yjf.test; import java.io.DataOutputStream; import java.io ...
- Socket通信代码(原理)
1.运行环境:NetBeans IDE 6.0.1 2.说明:先运行服务器端,再运行客户端. 3.服务器端代码: 新建java类Test import java.net.*; import java. ...
- Java socket通信
首先抛开语言层面,简单介绍一下socket通信过程: 1.服务器端开启监听端口,阻塞进程 等待客户端连接 2.客户端连接,这时就产生了一个socket socket就相当于一个传递消息的通道,一般都 ...
- Java Socket通信以及可能出现的问题解决
Java中基于TCP协议实现网络通信的两个类:客户端的Socket和服务器端的ServerSocket. Socket通信模型如图所示: 不管Socket通信的功能有多复杂,任何socket通信过程的 ...
- Java Socket通信实现私聊、群聊
前言 闲言少叙,上代码! 代码编写 server服务端 /** * 服务端 */ public class Server { private static ServerSocket server = ...
- Java Socket 通信实例 - 转载
基于Tcp协议的简单Socket通信实例(JAVA) 好久没写博客了,前段时间忙于做项目,耽误了些时间,今天开始继续写起~ 今天来讲下关于Socket通信的简单应用,关于什么是Socket以及一些 ...
- Java Socket通信实例
一.简单的客户端与服务器一对一连接: Socket通信的步骤: 1.创建ServerSocket和Socket 2.打开连接到Scket的输入/输出流 3.按照协议对Socket进行读/写操作 4.关 ...
随机推荐
- copy代码(含static对象)留下的致命错误
本来以为这个bug快改不好了,然而发现了问题所在 copy代码没有完全改掉对象名称,导致对象重复创建了,由于是static所以debug过程中 注释了addProperty(gridRowDetail ...
- python——模块与包2
模块与包2 1 什么是包 包是一种通过使用.'模块名'来组织python模块名称空间的方式. 无论是import形式还是from...import形式,凡是在导入语句中(而不是在使用时)遇到带点的,都 ...
- 个人网站建设(适合Java初学者)(一)
概述 作为一个在八本学校在校生,没有实验室,也没有项目可做.一直想做一个个人博客,一年前学完javaweb之后做了一个简单的博客,ui惨不忍睹就算了,还有各种bug.酝酿了很久,寒假用了将近一个月时间 ...
- 南阳OJ-2-括号配对问题---栈的应用
题目链接: http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=2 题目大意: 有一行括号序列,请你检查这行括号是否配对. 思路: 直接用栈来模拟 ...
- hdu2050 折线分割平面---递推
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2050 题目大意: 求n条折线分割平面的最大数目 思路: 先看n条直线的时候 一条直线 2个平面 两条 ...
- fromkeys() keys() values() items()
fromkeys() >>> dict1={} >>> dict1.fromkeys((1,2,3))#会自动为没有赋值的值建立none {1: None, 2: ...
- 从源码看JDK提供的线程池(ThreadPoolExecutor)
一丶什么是线程池 (1)博主在听到线程池三个字的时候第一个想法就是数据库连接池,回忆一下,我们在学JavaWeb的时候怎么理解数据库连接池的,数据库创建连接和关闭连接是一个比较耗费资源的事情,对于那些 ...
- 妙用 scale 与 transfrom-origin,精准控制动画方向
上次发完 不可思议的纯 CSS 导航栏下划线跟随效果 这篇文章之后,很多朋友找我讨论,感叹 CSS 的奇妙. 然后昨天,群里一位朋友问到了一个和这个效果比较类似的效果,问如何 将下面这个动画的下划线效 ...
- Python3玩转儿 机器学习(3)
机器学习算法可以分为: 监督学习 非监督学习 半监督学习 增强学习 监督学习:给机器的训练数据拥有"标记"或者"答案",例如: 我们需要告诉机器左边的画面是一只 ...
- 51nod1295 XOR key(可持久化trie)
1295 XOR key题目来源: HackerRank基准时间限制:1.5 秒 空间限制:262144 KB 分值: 160 难度:6级算法题 给出一个长度为N的正整数数组A,再给出Q个查询,每个查 ...