socket经典案例-发送数据
一:客户端向服务端发送数据。
服务端:
package com.company.s; import java.io.*;
import java.net.ServerSocket;
import java.net.Socket; public class Server {
public static void main(String[] args) throws IOException{
char[] charArray=new char[3];
ServerSocket serverSocket=new ServerSocket(8088);
System.out.println("accept begin="+System.currentTimeMillis());
Socket socket=serverSocket.accept();
System.out.println("accept end="+System.currentTimeMillis());
InputStream inputStream=socket.getInputStream();
InputStreamReader inputStreamReader=new InputStreamReader(inputStream);
System.out.println("read begin "+System.currentTimeMillis());
int readLength=inputStreamReader.read(charArray);//阻塞
while (readLength!=-1){
String newString=new String(charArray,0,readLength);
System.out.println(newString);
readLength=inputStreamReader.read(charArray);
}
System.out.println("read end "+System.currentTimeMillis());
inputStream.close();
socket.close();
serverSocket.close();
}
}
2.客户端代码:
package com.company.s; import java.io.OutputStream;
import java.net.Socket; public class Client {
public static void main(String[] args) throws Exception{
System.out.println("socket begin "+System.currentTimeMillis());
Socket socket=new Socket("localhost",8088);
System.out.println("socket end "+System.currentTimeMillis());
Thread.sleep(3000);
OutputStream outputStream=socket.getOutputStream();
outputStream.write("我是中国人".getBytes());
outputStream.close();
socket.close();
}
}
二:服务端向客户端发送数据
1.server.java
package com.company.s; import java.io.*;
import java.net.ServerSocket;
import java.net.Socket; public class Server {
public static void main(String[] args) throws IOException{
ServerSocket serverSocket=new ServerSocket(8088);
System.out.println("accept begin="+System.currentTimeMillis());
Socket socket=serverSocket.accept();
System.out.println("accept end="+System.currentTimeMillis());
OutputStream outputStream=socket.getOutputStream();
outputStream.write("我是思思博士".getBytes());
outputStream.close();
socket.close();
serverSocket.close();
}
}
2.客户端代码:
package com.company.s; import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket; public class Client {
public static void main(String[] args) throws Exception{
System.out.println("socket begin "+System.currentTimeMillis());
Socket socket=new Socket("localhost",8088);
System.out.println("socket end "+System.currentTimeMillis());
char[] charBuffer=new char[3];
InputStream inputStream=socket.getInputStream();
InputStreamReader inputStreamReader=new InputStreamReader(inputStream);
System.out.println("serverB begin "+System.currentTimeMillis());
int readLength=inputStreamReader.read(charBuffer);
System.out.println("serverB end "+System.currentTimeMillis());
while (readLength!=-1){
System.out.println(new String(charBuffer,0,readLength));
readLength=inputStreamReader.read(charBuffer);
}
System.out.println();
inputStream.close();
socket.close(); System.out.println("client 运行结束="+System.currentTimeMillis()); }
}
socket经典案例-发送数据的更多相关文章
- Java Socket 服务端发送数据 客户端接收数据
服务端: package com.thinkgem.wlw.modules.api.test.socket; /** * @Author: zhouhe * @Date: 2019/4/8 9:30 ...
- python使用socket向客户端发送数据的方法
在使用locust测试长连接的时候,所有的请求全部faillure了,所以想到手动写一个连接脚本测试一下是否能连通 因为centos7自带python2.7所以用python写一个比较方便. #!/u ...
- 一文搞懂 Netty 发送数据全流程 | 你想知道的细节全在这里
欢迎关注公众号:bin的技术小屋,如果大家在看文章的时候发现图片加载不了,可以到公众号查看原文 本系列Netty源码解析文章基于 4.1.56.Final版本 在<Netty如何高效接收网络数据 ...
- [C#参考]利用Socket连续发送数据
这个例子只是一个简单的连续发送数据,接收数据的DEMO.因为最近做一个项目,要求robot连续的通过Socket传回自己的当前的位置坐标,然后客户端接收到坐标信息,在本地绘制地图,实时显示robot的 ...
- (原)关于udp的socket发送数据耗时的问题探讨
转载请注明出处:http://www.cnblogs.com/lihaiping/p/6811791.html 本学习笔记,仅用于问题探讨,如有不同,可以讨论. 最近在看流媒体分发服务器的相关代码,其 ...
- 对于socket发送数据时是否要加锁及write read的阻塞非阻塞
偶尔讨论到了socket发送数据时是否应该加锁的问题,就在网上查了一下,下面是大神陈硕的答案 对于 UDP,多线程读写同一个 socket 不用加锁,不过更好的做法是每个线程有自己的 socket,避 ...
- .net 中异步SOCKET发送数据时碰到的内存问题
做CS的开发一直都是这样的方式: server端用 C++编写,采用IOCP机制处理大量客户端连接.数据接收发送的问题 client端用 C++ 或C# 写,没什么特殊要求. 最近工作时间上比较宽裕, ...
- Android(java)学习笔记80:UDP协议发送数据
UDP协议发送数据:我们总是先运行接收端,再运行发送端发送端: 1 package cn.itcast_02; import java.io.IOException; import java.net. ...
- 经典案例之MouseJack
引言:在昨天的文章<无线键鼠监听与劫持>中,我们提到今天会向您介绍一个无线键鼠的监听与劫持的经典案例,<MouseJack>:MouseJack能利用无线鼠标和键盘存在的一些问 ...
随机推荐
- 基于Tomcat的GeoServer部署步骤
一.安装JAVA 资源:JDK1.8 提取码:0y26 步骤: 1.安装完成后,右击"我的电脑",点击"属性",选择"高级系统设置": 2. ...
- Android高斯模糊实现方案
1.使用Glide Glide.with(this) .load(service.getImageUri()) .dontAnimate() .error(R.drawable.error_img) ...
- supervisor 相关命令
今天重新使用 supervisor 相关命令的时候,发现已经忘了,下面重新进行记录一下,进行备忘: supervisorctl restart <application name> ; 重 ...
- 管道及 I/O 重定向
I/O重定向 I/O Redirection 标准输入.标准输出.标准错误输出重定向及综合案例输入重定向及结合案例 标准输入.标准输出.标准错误 file descriptors (FD,文件描述符 ...
- Autofac 泛型依赖注入
using Autofac;using Autofac.Extensions.DependencyInjection;using Hangfire;using Microsoft.AspNetCore ...
- Builder模式的目的是解耦构建过程,为什么要用内部类?
还没有看过Builder模式的作用,看过一篇介绍Builder模式的文章,这里是关于Builder模式的思考:思考是否有比新建一个内部类更好的方法,首先想到的是 package xyz.n490808 ...
- Go学习笔记(持续更中,参考go编程基础,go边看边练)
使用关键字 var 定义变量,自动初始化为零值.如果提供初始化值,可省略变量类型. 在函数内部,可用更简略的 := 方式定义变量.空白符号_ package main import "fmt ...
- ConcurrentHashMap(1.7)分析
1. 先来了解ConcurrentHashMap中的几个成员,当然大多数与HashMap中的相似,我们只看独有的成员 /** * The default concurrency level for ...
- Pick of the Week'19 | 图数据库 Nebula 第 47 周看点-- insert 的二三事
每周五 Nebula 为你播报每周看点,每周看点由本周大事件.用户问答.Nebula 产品动态和推荐阅读构成. 今天是 2019 年第 47 个工作周的周五,来和 Nebula 看看本周有什么图数据库 ...
- How to: Implement File Data Properties 如何:实现文件数据属性
This topic demonstrates how to implement a business class with a file data property and a file colle ...