上机题目(0基础)- Java网络操作-Socket实现client和server端通信二(Java)
上一节实现了client像server端发送请求。本节将实现server端向client回传信息。实现原理非常easy,在原来的基础上。在server端实现输出流,在client实现输入流就可以,详细代码例如以下:
server端:
package com.socket.demo; import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket; public class Server {
public static void main(String[] args) {
try{
ServerSocket serverSocket=new ServerSocket(8888);
System.out.println("----------------服务端执行。開始监听请求----------------");
Socket socket=serverSocket.accept();//開始监听
InputStream inputStream=socket.getInputStream();
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream));
//获取请求内容
String info;
while ((info=bufferedReader.readLine())!=null) {
System.out.println("我是server端。client请求为:"+info); } socket.shutdownInput();
//server端向client回传信息
OutputStream outputStream=socket.getOutputStream();
PrintWriter printWriter=new PrintWriter(outputStream);
printWriter.write("client您好。我已经接受到你的信息");
printWriter.flush();
//关闭资源
printWriter.close();
outputStream.close();
bufferedReader.close();
inputStream.close();
socket.close();
serverSocket.close();
}catch(Exception exception){ } } }
client:
package com.socket.demo; 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 {
//发送到8888端口
Socket socket=new Socket("127.0.0.1", 8888);
//输出流
OutputStream outputStream=socket.getOutputStream();
PrintWriter printWriter=new PrintWriter(outputStream);
printWriter.write("server端你好,我是client。 ");
printWriter.flush();
socket.shutdownOutput();//这个不能少。! ! ! !!!。!!。! ! !
//接受server端回传的信息
InputStream inputStream=socket.getInputStream();
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream));
String info;
while ((info=bufferedReader.readLine())!=null) {
System.out.println("我是client。server端返回::"+info); }
//关闭资源
bufferedReader.close();
inputStream.close();
printWriter.close();
outputStream.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} }
执行实比例如以下:
server控制台输出:
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA8YAAAD7CAYAAAConY0vAAAgAElEQVR4AeydCXgV1dnH/zd72MMiCiIguQEioHWF4L603qA2Lo3aVvk+rYlaNaFtauvnUit1o19JWqsNalvQVsW2xk+5V2vdKptW6wLGmhsFREVEdgjZ53veM8udmTt3SUhCIP/7PMmcOct73vM7586dd95zzvjWfd6gwfY57JBs66ypqckK94bA7t27o9Tw+XxWXHt7O+QvJSVF/VkJtoCmOZprS2GQBEiABEiABEiABEiABEigNxGQe333Pb7Eef01NDQgIyNjr9XPysrqsIzMzEyrzCcb9lhhCdjtqy+//NKRJifSFtNGSU9PR2pqKtra2tDS0hKVVyLS0tKwePFizDrnXHy1aTP27GmEprVH5e3fvz+ys3Xbbs+ePTHDXjaWCGtv15Qew4bn4PWVK3DBBRdE1dEbIoSfMBEbUMZKa2ur5/iQfDJGRowYYalt76s0K/YACMQziA+A5rEJJEACJEACJEACJEACJNDnCPSle3wxhmMZxO6Ob25qxo4dO9He3oZ2D+df4944OTUoY10Mdq092uh267Kvz8UY3tvPfmUYy5dibz/ypIAfEiABEiABEiABEiABEiCB/ZOA3M/b//anVog3uDMf06MsZcUmGj58OLZs2YwhQwYrr66Xx7gz9XiV2b27AeIR7wpbzEt+d8TZx0ey9l+UYSzuZLu7vzsU7azMrugM+6DqrB4sRwIkQAIkQAIkQAIkQAIk0LUEkjVgpFbT8DHDXatJ56XZp+aaUuz2lZc9I23piI0i+XNzc7FmzRps27bNrKbbjjI9feTIkYp5t1WSpOCuHCPuvooyjJPUaZ9k64o1zx0ZdPukkayUBEiABEiABEiABEiABPoggY4YPfsrnq6Y8ittHz16tPrrSQ7Nzc0dMuC7Q7fuHCM+9+ZbZgN6q9fY1I9HEiABEiABEiABEiABEiABEugtBNweSLdetK/cRPbduVdfxVy065V536nOmkmABEiABEiABEiABEiABEigdxJIxnZKJk/vbN2BpVWsfojpMbY3n0837DQYJgESIAESIAESIAESIAESIAEglpGViA3tq0SEuj49UV8lZRh3vVqUSAIkQAIkQAIkQAIkQAIkQAIkQAK9g0DMqdS9Qz1qQQIkQAIkQAIkQAIkQAIkQAIkQALdS4CGcffypXQSIAESIAESIAESIAESIAESIIFeToCGcS/vIKpHAiRAAiRAAiRAAiRAAiRAAiTQvQSSeo/x+7W13asFpZMACZAACZAACZAACZAACZAACZBANxE4Ij8/ruS4hrFpEB/qz40rhIkkQAIHJoGphw1G6MW3VOMCZxxzYDayF7TKZMxrbS/oDKpAAiRAAiRAAiRwQBIwbdtYBnLMXamlIG/SDsgxwUaRQFIETKOYBnFSuLokkxjIvO52CUoKIQESIAESIAESIAFPAp+G6+FlHHsaxjSKPRkykgT6FAG5aNAo7vkup3Hc88xZIwmQAAnsjwRee/nvWPHay9j81aa9Vn/Y8BGYcdJpOOm0rytZ3Sl7r5WlABLoAgJexnHcqdRdUCdFkAAJ7IcExFv8aXg/VJwqkwAJkAAJ7LcEFj54H66/YQ527GnZb9vQU4q/+uJzWPrS3zEpfwqOPGrvlzrt2rkDf3/2KbS3t6smdJfsU844W8lnX/fUSGE9HSEQZRiLt3h0bi40rSNimJcESOBAIiBeS3qL902PCnfhL9dhfkiABA48Aj7fgdGmrZs34qVn/4yWpkacErgEh4wZbzVsTd1qLPvHUxg0ZBjO/OZ30a//ICutKwKNdb8GYnHU2pEx9rtIyRzeFVV1qYx4evtSMpB+6EVJ673ytVeQP3Uahg4/CAMGRvhqmgatvR3tmobU1FT4khxwBx0yWrVV5Mqnu2SbhnGXgqUwRaC9cRNSskaQhotALJtW7rPE7rVPqY4yjF2y1OmqF2/
posted on
2017-07-27 19:30
cynchanpin
阅读(...)
评论(...)
编辑
收藏
上机题目(0基础)- Java网络操作-Socket实现client和server端通信二(Java)的更多相关文章
- 上机题目(0基础)- Java网络操作-Socket实现client和server端通信(Java)
非常多刚開始学习的人对于java网络通信不太熟悉.对相关概念也不太明确,这里我们主要实现一下socket通信,socket通信在java中应用十分广泛.比如QQ和MSN等都是基于socket通信的,什 ...
- Socket实现client和server端通信(Java)(转)
转自: https://blog.csdn.net/yayun0516/article/details/50819147 https://www.jianshu.com/p/2d4f223f1462 ...
- java网络编程socket\server\TCP笔记(转)
java网络编程socket\server\TCP笔记(转) 2012-12-14 08:30:04| 分类: Socket | 标签:java |举报|字号 订阅 1 TCP的开销 a ...
- 上机题目(0基础)- Java网络操作-打印网页(Java)
打印一个网页,熟悉Java网络编程: import java.io.BufferedReader; import java.io.IOException; import java.io.InputSt ...
- java网络编程socket解析
转载:http://www.blogjava.net/landon/archive/2013/07/02/401137.html Java网络编程精解笔记2:Socket详解 Socket用法详解 在 ...
- java网络编程Socket通信详解
Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket.像大家熟悉的QQ.MSN都使用了Socket相关的技术. ...
- java 网络编程Socket
TCP: 通过TCP协议传输,得到的是一个顺序的无差错的数据流. 发送方和接收方的成对的两个socket之间必须建立连接, 以便在TCP协议的基础上进行通信,当一个socket(通常都是server ...
- JAVA网络编程Socket常见问题 【长连接专题】
一. 网络程序运行过程中的常见异常及处理 第1个异常是 java.net.BindException:Address already in use: JVM_Bind. 该异常发生在服务器端进行new ...
- day05 Java网络编程socket 与多线程
java网络编程 java.net.Socket Socket(套接字)封装了TCP协议的通讯细节,是的我们使用它可以与服务端建立网络链接,并通过 它获取两个流(一个输入一个输出),然后使用这两个流的 ...
随机推荐
- Hexo NexT主题添加点击爱心效果
给NexT主题内添加页面点击出现爱心的效果 创建js文件 在/themes/next/source/js/src下新建文件clicklove.js,接着把该链接下的代码拷贝粘贴到clicklove.j ...
- GCD 开发详情
目录 一.简介 二.dispatch Queue - 队列 三.dispatch Groups - 组 四.dispatch Semaphores - 信号量 五.dispatch Barriers ...
- 【bzoj1047】[HAOI2007]理想的正方形 二维RMQ
题目描述 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 输入 第一行为3个整数,分别表示a,b,n的值第二行至第a+1行每行为b个非 ...
- vue数组对象修改触发视图更新
直接修改数组元素是无法触发视图更新的,如 this.array[0] = { name: 'meng', age: 22 } 修改array的length也无法触发视图更新,如 this.array. ...
- 【CZY选讲·一道图论好题】
题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图,不仅有边权还有点权.LYK给出了一个子图的定义,一张图G'={V',E'}被称作G的子图,当且仅当: · ...
- 使用fdisk命令对linux硬盘进行操作
fdisk是linux自带的硬盘分区工具,可以对硬盘进行分区,或者对硬盘分区进行调整.本次试验环境请参考[Linux磁盘系统基础知识] 首先选择要进行操作的磁盘 [root@a ~]# fdisk / ...
- Spring整合hibernate4:事务管理
Spring整合hibernate4:事务管理 Spring和Hibernate整合后,通过Hibernate API进行数据库操作时发现每次都要opensession,close,beginTran ...
- 联合权值(NOIP2014)奇特的模拟。。
原题传送门 这道题瞄了一眼还以为是SPFA最短路. 后面发现距离为2.. 好像可以枚举中间点来着? 时间效率O(n*(2n-2))≍O(n^2) BOOM!(PS:9018上过了,说明数据太水了..) ...
- 5.OpenStack添加镜像服务
添加镜像服务 这里是安装在控制器上 创建数据库 mysql -uroot -ptoyo123 CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glanc ...
- 你不一定知道的、并没有什么卵用的一些python库
1. delorean,用来处理时间的库 import datetime import pytz # 一般情况下,我们想表示时间的话 est = pytz.timezone("Asia/Sh ...