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的更多相关文章

  1. 基于TCP/IP协议的socket通讯server

    思路: socket必须要随项目启动时启动,所以需用Spring自带的监听器,需要保持长连接,要用死循环,所以必须另外起线程,不能阻碍主线程运行 1.在项目的web.xml中配置listener &l ...

  2. http、TCP/IP协议与socket之间的区别

    http.TCP/IP协议与socket之间的区别     网络由下往上分为:  www.2cto.com   物理层--                       数据链路层-- 网络层--   ...

  3. 基于TCP/IP协议的C++网络编程(API函数版)

    源代码:http://download.csdn.net/detail/nuptboyzhb/4169959 基于TCP/IP协议的网络编程 定义变量——获得WINSOCK版本——加载WINSOCK库 ...

  4. http、TCP/IP协议与socket之间的区别(转载)

    http.TCP/IP协议与socket之间的区别  https://www.cnblogs.com/iOS-mt/p/4264675.html http.TCP/IP协议与socket之间的区别   ...

  5. c# TCP/IP协议利用Socket Client通信(只含客户端Demo)

    完全是基础,新手可以随意看看,大牛可以关闭浏览页了,哈哈. TCP/IP协议 TCP/IP是一系列网络通信协议的统称,其中最核心的两个协议是TCP和IP.TCP称为传输控制协议,IP称为互联网络协议. ...

  6. JAVA基础知识之网络编程——-TCP/IP协议,socket通信,服务器客户端通信demo

    OSI模型分层 OSI模型是指国际标准化组织(ISO)提出的开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),它将网络分为七 ...

  7. TCP/IP协议与Socket

    1.计算机网络体系结构分层 OSI 参考模型注重"通信协议必要的功能是什么", TCP/IP 则更强调"在计算机上实现协议应该开发哪种程序". 2.TCP/IP ...

  8. 读书笔记——网络编程与开发技术(3)基于TCP/IP协议的网络编程相关知识

    TCP/IP协议:数据链路层,网络层,传输层,应用层. IP地址分为5类:A类.B类.C类.D类.E类. (A类.B类.C类是基本类,D类多用于多播传送,E类为保留类.) "*"表 ...

  9. 基于TCP/UDP协议的socket

    基于TCP协议的socket tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端 server端 import socket sk = socket.socket() sk.bind( ...

随机推荐

  1. RSA 时序攻击

    RSA的破解从理论上来讲是大数质数分解,可是就是有一些人另辟蹊径,根据你解密的时间长短就能破解你的RSA私钥. 举一个不恰当但是比较容易理解的例子: 密文0101 私钥0110 明文0100 问题的关 ...

  2. 10.5-uC/OS-III内部任务(时基任务OS-TickTask())

    几乎所有的实时系统都需要有一个能提供周期性时间的时间源,叫做时基周期或系统周期. uC/OS-III的时基周期处理程序封装在OS_TICK.C文件中. OS_TickTask()任务被uC/OS-II ...

  3. centos7安装webmin

    安装webmin准备centos7系统1.下载http://download.webmin.com/download/yum/选择:webmin-1.700-1.noarch.rpm 安装包 wget ...

  4. 利用Linux的硬连接删除MySQL大文件

    利用Linux的硬连接删除MySQL大文件 http://blog.csdn.net/wxliu1989/article/details/22895201 原理:硬链接基础当多个文件共同指向同一ino ...

  5. 20165236 2017-2018-2 《Java程序设计》第九周学习总结

    20165236 2017-2018-2 <Java程序设计>第九周学习总结 一.第十三章教材内容总结 1.URL类 URL类是java.net包中的一个重要的类,使用URL创建对象的应用 ...

  6. 自己实现strtok函数

    思路:每次在原来字符串中查找分隔字符串,将分隔字符串中所有字符设为'\0',然后输出分隔串前的子串,同时更新原串的起始位置. PS:有不少博客作者自己实现的方法中往往只将分隔串当做一个字符,实际上可以 ...

  7. HTTPS流程

    我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取.所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议. HTTPS简介 HTTPS其实是有两部分组成:HTTP + SSL ...

  8. TestNG-详解preserve-order的作用与测试case的执行顺序

    在TestNG xml配置文件中,关于<test>的配置里面,有一个属性叫preserve-order,一开始以为这个属性可以用来控制测试case(那些被@Test注解标注的方法)的执行顺 ...

  9. CentOS6.5安装RHive

    1.安装RServe软件包(各个节点都要安装) [root@Hadoop-NN-01 mysofts] # R CMD INSTALL Rserve_1.7-2.tar.gz 2.设置环境变量 [ro ...

  10. Tortoisegit和GitHub使用入门

    作为一个Code人对于github并不陌生吧,记录下使用说明: gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub. 工具: git: ...