一:客户端向服务端发送数据。

服务端:

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经典案例-发送数据的更多相关文章

  1. Java Socket 服务端发送数据 客户端接收数据

    服务端: package com.thinkgem.wlw.modules.api.test.socket; /** * @Author: zhouhe * @Date: 2019/4/8 9:30 ...

  2. python使用socket向客户端发送数据的方法

    在使用locust测试长连接的时候,所有的请求全部faillure了,所以想到手动写一个连接脚本测试一下是否能连通 因为centos7自带python2.7所以用python写一个比较方便. #!/u ...

  3. 一文搞懂 Netty 发送数据全流程 | 你想知道的细节全在这里

    欢迎关注公众号:bin的技术小屋,如果大家在看文章的时候发现图片加载不了,可以到公众号查看原文 本系列Netty源码解析文章基于 4.1.56.Final版本 在<Netty如何高效接收网络数据 ...

  4. [C#参考]利用Socket连续发送数据

    这个例子只是一个简单的连续发送数据,接收数据的DEMO.因为最近做一个项目,要求robot连续的通过Socket传回自己的当前的位置坐标,然后客户端接收到坐标信息,在本地绘制地图,实时显示robot的 ...

  5. (原)关于udp的socket发送数据耗时的问题探讨

    转载请注明出处:http://www.cnblogs.com/lihaiping/p/6811791.html 本学习笔记,仅用于问题探讨,如有不同,可以讨论. 最近在看流媒体分发服务器的相关代码,其 ...

  6. 对于socket发送数据时是否要加锁及write read的阻塞非阻塞

    偶尔讨论到了socket发送数据时是否应该加锁的问题,就在网上查了一下,下面是大神陈硕的答案 对于 UDP,多线程读写同一个 socket 不用加锁,不过更好的做法是每个线程有自己的 socket,避 ...

  7. .net 中异步SOCKET发送数据时碰到的内存问题

    做CS的开发一直都是这样的方式: server端用 C++编写,采用IOCP机制处理大量客户端连接.数据接收发送的问题 client端用 C++ 或C# 写,没什么特殊要求. 最近工作时间上比较宽裕, ...

  8. Android(java)学习笔记80:UDP协议发送数据

    UDP协议发送数据:我们总是先运行接收端,再运行发送端发送端: 1 package cn.itcast_02; import java.io.IOException; import java.net. ...

  9. 经典案例之MouseJack

    引言:在昨天的文章<无线键鼠监听与劫持>中,我们提到今天会向您介绍一个无线键鼠的监听与劫持的经典案例,<MouseJack>:MouseJack能利用无线鼠标和键盘存在的一些问 ...

随机推荐

  1. Android 菜单 Menu

    @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to th ...

  2. Linux 命令行初始化MySQL数据库

    作为一个技术纯小白,在Linux服务器初始化MySQL数据库的时候遇到了一点小问题: ​ 1.不会使用MySQL图形工具,几乎没玩过 ​ 2.客户的VPN没有开放3306端口,没法用navicat等工 ...

  3. MQ报错2009/2085解决方法

    1.1. 响应2009错误 1.1.1.   涉及协议 MQ,调试回放阶段 1.1.2.   错误信息 完成码2原因为2009 1.1.3.   可能原因 远端MQ连接数不足,拒绝连接 1.1.4.  ...

  4. C#开发微信小程序(二)

    导航:C#开发微信小程序系列 关于小程序项目结构,框架介绍,组件说明等,请查看微信小程序官方文档,关于以下贴出来的代码部分我只是截取了一些片段,方便说明问题,如果需要查看完整源代码,可以在我的项目库中 ...

  5. 在 .NET Core 3.0 中支持 Newtonsoft.Json 的使用

    .NET Core 3.0 已经使用了一整套内置的 Josn 序列化/反序列化方案,而且看上去效率还不错.但对于某些项目必须使用到 Newtonsoft.Json 的时候,就会抛出如下异常: Syst ...

  6. C# get folder's Md5 generated by file's and filename's md5. get dictionary md5

    C# get dictionary md5 static string GetDicMD5(string dirFullName) { logBuilder = new StringBuilder() ...

  7. tf读取图片,matplotlib可视化

    代码: """ 使用tf读取图片 """ import tensorflow as tf import matplotlib.pyplot ...

  8. ES-索引管理

    参考: https://es.xiaoleilu.com/070_Index_Mgmt/00_Intro.html 创建索引 PUT /new_index 创建更多详细设置的索引: 删除索引 DELT ...

  9. MySQL集群读写分离的自定义实现

    基于MySQL Router可以实现高可用,读写分离,负载均衡之类的,MySQL Router可以说是非常轻量级的一个中间件了.看了一下MySQL Router的原理,其实并不复杂,原理也并不难理解, ...

  10. Oracle解析逗号分隔的字符串,或者01110110101此类数据

    -- 1.提取此类数据中的1的索引位置,从1开始    例: 0001100001100 --> 4,5,10,11 create or replace function hazq_instr_ ...