基于TCP/IP协议的socket通讯client
- package com.ra.car.utils;
- 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;
- import java.util.HashMap;
- import java.util.Map;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import com.alibaba.fastjson.JSON;
- public class JavaTCPClient {
- protected static final Logger logger = LoggerFactory
- .getLogger(JavaTCPClient.class);
- public static void main(String[] args) {
- try {/*
- // 创建Socket对象
- Socket socket = new Socket("a.mintaian.com", 8903);
- logger.info("11111111111111");
- // 根据输入输出流和服务端连接
- OutputStream outputStream = socket.getOutputStream();// 获取一个输出流,向服务端发送信息
- logger.info("2222222222222222222");
- PrintWriter printWriter = new PrintWriter(outputStream);// 将输出流包装成打印流
- logger.info("3333333333333333333");
- printWriter.print("服务端你好,我是客户1,这是我的第"+i+"次请求");
- logger.info("444444444444444");
- printWriter.flush();
- socket.shutdownOutput();// 关闭输出流
- logger.info("55555555555");
- InputStream inputStream = socket.getInputStream();// 获取一个输入流,接收服务端的信息
- logger.info("666666666666666666");
- InputStreamReader inputStreamReader = new InputStreamReader(
- inputStream);// 包装成字符流,提高效率
- logger.info("777777777777777777");
- BufferedReader bufferedReader = new BufferedReader(
- inputStreamReader);// 缓冲区
- logger.info("888888888888888888888");
- String info = "";
- String temp = null;// 临时变量
- while ( (temp=bufferedReader.readLine())!= null) {
- logger.info("9999999999999");
- info += temp;
- logger.info("客户端接收服务端发送信息:" + info+i);
- }
- logger.info("这是我的第"+i+"次调用!");
- // 关闭相对应的资源
- bufferedReader.close();
- inputStream.close();
- printWriter.close();
- outputStream.close();
- socket.close();
- */
- Socket socket = new Socket("a.mintaian.com", 8903);
- OutputStream os = socket.getOutputStream();
- PrintWriter printWriter = new PrintWriter(os);
- Map<String, Object> map=new HashMap<String, Object>();
- Map<String, Object> m=new HashMap<String, Object>();
- Map<String, Object> m1=new HashMap<String, Object>();
- m1.put("subAlarmName", "左边虚线");
- String[] str=new String[]{"1","2","3"};
- m1.put("adasRes", str);
- m.put("imei", "862465030008629");
- m.put("deviceData", m1);
- map.put("id", "862465030008629-1509354778289");
- map.put("dataPackage", m);
- map.put("isAdas", "1");
- String msg = JSON.toJSONString(map)+"\n";
- printWriter.write(msg);
- printWriter.flush();
- // socket.shutdownOutput();
- InputStream is = socket.getInputStream();
- InputStreamReader inputStreamReader = new InputStreamReader(
- is);
- BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
- logger.info("发送的消息是:" + msg);
- msg = null;
- while ((msg = bufferedReader.readLine()) != null) {
- logger.info("msg:" + msg);
- }
- logger.info("999999999999999999999999");
- // 关闭相对应的资源
- // bufferedReader.close();
- // is.close();
- // printWriter.close();
- // os.close();
- //socket.close();
- } catch (UnknownHostException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
基于TCP/IP协议的socket通讯client的更多相关文章
- 基于TCP/IP协议的socket通讯server
思路: socket必须要随项目启动时启动,所以需用Spring自带的监听器,需要保持长连接,要用死循环,所以必须另外起线程,不能阻碍主线程运行 1.在项目的web.xml中配置listener &l ...
- http、TCP/IP协议与socket之间的区别
http.TCP/IP协议与socket之间的区别 网络由下往上分为: www.2cto.com 物理层-- 数据链路层-- 网络层-- ...
- 基于TCP/IP协议的C++网络编程(API函数版)
源代码:http://download.csdn.net/detail/nuptboyzhb/4169959 基于TCP/IP协议的网络编程 定义变量——获得WINSOCK版本——加载WINSOCK库 ...
- http、TCP/IP协议与socket之间的区别(转载)
http.TCP/IP协议与socket之间的区别 https://www.cnblogs.com/iOS-mt/p/4264675.html http.TCP/IP协议与socket之间的区别 ...
- c# TCP/IP协议利用Socket Client通信(只含客户端Demo)
完全是基础,新手可以随意看看,大牛可以关闭浏览页了,哈哈. TCP/IP协议 TCP/IP是一系列网络通信协议的统称,其中最核心的两个协议是TCP和IP.TCP称为传输控制协议,IP称为互联网络协议. ...
- JAVA基础知识之网络编程——-TCP/IP协议,socket通信,服务器客户端通信demo
OSI模型分层 OSI模型是指国际标准化组织(ISO)提出的开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),它将网络分为七 ...
- TCP/IP协议与Socket
1.计算机网络体系结构分层 OSI 参考模型注重"通信协议必要的功能是什么", TCP/IP 则更强调"在计算机上实现协议应该开发哪种程序". 2.TCP/IP ...
- 读书笔记——网络编程与开发技术(3)基于TCP/IP协议的网络编程相关知识
TCP/IP协议:数据链路层,网络层,传输层,应用层. IP地址分为5类:A类.B类.C类.D类.E类. (A类.B类.C类是基本类,D类多用于多播传送,E类为保留类.) "*"表 ...
- 基于TCP/UDP协议的socket
基于TCP协议的socket tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端 server端 import socket sk = socket.socket() sk.bind( ...
随机推荐
- android实现手势锁
通过简单的设置后即可实现简单的手势锁: setLineVisible方法设置是否显示手势路径: setLineWidth方法设置手势路径连线的粗细: setLineColor方法设置常规状态手势路径连 ...
- json 脚本入库的几种方法
json 脚本入库的几种方法,见代码: #-*- encoding: utf-8 -*- #第一种mongodb入库 # from pymongo import * # import json # c ...
- 牛客Wannafly9E 组一组 差分约束
正解:差分约束 解题报告: 传送门! 首先肯定要想到把他们分开来考虑,就是说,把数二进制拆分掉,这样就可以分开考虑了嘛 然后考虑设f[i]:前i个数中的1的个数 然后就可以得到一堆差分约束的式子 然后 ...
- 【PyQt5-Qt Designer】制作炫酷的启动界面+进度条
QProgressBar 进度条+QSplashScreen 启动界面 知识点: 1.进度条 #将进度条的最大值.最小值设置为相同时,产生跑马灯效果 self.progressBar.setMinim ...
- vue获取地址栏传过来的参数VS原生js获取地址栏的参数
Vue的方式 Vue的 query方式 ①this.$route.query.companyId ( companyId 为参数的名称 是$route 不是 $router) Vue的 params方 ...
- python面向对象的三大特性
一.继承 面向对象中的继承就是继承的类直接拥有被继承类的属性而不需要在自己的类体中重新再写一遍,其中被继承的类叫做父类.基类,继承的类叫做派生类.子类.在python3中如果不指定继承哪个类,默认就会 ...
- ef codefirst 模型字段类型与sqlserver表字段类型对应概要
1.sqlserver中nvarchar(50),对应EF中: [MaxLength(, ErrorMessage = "最大长度为{1}")] public string Nam ...
- C#-1-1-.net
1..Net (1).Net平台 (2). FrameWork框架 2..Net应用 (1).桌面应用程序(Win form(.Net开发的桌面应用程序叫做Win form应用程序)). (2).In ...
- RCNN
[Rich feature hierarchies for accurate object detection and semantic segmentation] 技术路线:selective se ...
- 实例:使用puppeteer headless方式抓取JS网页
puppeteer google chrome团队出品的puppeteer 是依赖nodejs和chromium的自动化测试库,它的最大优点就是可以处理网页中的动态内容,如JavaScript,能够更 ...