文档章节

Java Socket

C-Kellen
 C-Kellen
发布于 2017/09/01 10:14
字数 398
阅读 18
收藏 0
点赞 0
评论 0

流程介绍

SocketServer

package com.socket;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SocketServer {
	public static String _pattern = "yyyy-MM-dd HH:mm:ss SSS";
	public static SimpleDateFormat format = new SimpleDateFormat(_pattern);
	// 设置超时间
	public static int _sec = 0;

	public static void main(String[] args) {
		System.out.println("----------SocketServer----------");
		System.out.println(format.format(new Date()));

		ServerSocket server;
		try {
			server = new ServerSocket(8001);
			System.out.println("监听建立 等你上线\n");

			Socket socket = server.accept();
			System.out.println(format.format(new Date()));
			System.out.println("建立了链接\n");

			BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));

			socket.setSoTimeout(_sec * 1000);
			System.out.println(format.format(new Date()) + "\n" + _sec + "秒的时间 快写\n");

			System.out.println(format.format(new Date()) + "\nSocketClient:" + br.readLine() + "\n");

			Writer writer = new OutputStreamWriter(socket.getOutputStream());
			
			System.out.println(format.format(new Date()));
			System.out.println("我在写回复\n");
			
			writer.write("收到\n");

			Thread.sleep(10000);
			writer.flush();
			
			System.out.println(format.format(new Date()));
			System.out.println("写完啦 你收下\n\n\n\n\n");
		} catch (SocketTimeoutException e) {
			System.out.println(format.format(new Date()) + "\n" + _sec + "秒没给我数据 我下啦\n\n\n\n\n");
			e.printStackTrace();
		} catch (SocketException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

SocketClient

package com.socket;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.Socket;
import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SocketClient {
	public static String _pattern = "yyyy-MM-dd HH:mm:ss SSS";
	public static SimpleDateFormat format = new SimpleDateFormat(_pattern);
	// 设置超时间
	public static int _sec = 5;

	public static void main(String[] args) {
		System.out.println("----------SocketClient----------");

		Socket socket = null;
		try {
			// 与服务端建立连接
			socket = new Socket("127.0.0.1", 8001);
			socket.setSoTimeout(_sec * 1000);

			System.out.println(format.format(new Date()));
			System.out.println("建立了链接\n");

			// 往服务写数据
			Writer writer = new OutputStreamWriter(socket.getOutputStream());
						
			System.out.println(format.format(new Date()));
			System.out.println("我在写啦\n");
			Thread.sleep(10000);
			writer.write("有没有收到\n");
			
			System.out.println(format.format(new Date()));
			System.out.println("写完啦 你收下\n");
			
			writer.flush();
			
			BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));

			
			System.out.println(format.format(new Date()) + "\n" + _sec + "秒的时间 告诉我你收到了吗\n");

			System.out.println(format.format(new Date()) + "\nSocketServer:" + br.readLine());
			
		} catch (SocketTimeoutException e) {
			System.out.println(format.format(new Date()) + "\n" + _sec + "秒没收到回复 我下啦\n\n\n\n\n");
			e.printStackTrace();
		} catch (SocketException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

 

© 著作权归作者所有

共有 人打赏支持
C-Kellen
粉丝 17
博文 106
码字总数 80242
作品 0
朝阳
程序员
weblogic集群被管节点出现socket错误

weblogic 集群出现socket错误 启动出现错误 <span ><Nov 13, 2013 12:57:10 PM CST> <Error> <Cluster> <BEA-000109> <An error occurred while sending multicast message: java.io.IOExcep......

tututu_jiang
06/15
0
0
JVM Attach实现原理剖析

前言 本文旨在从理论上分析JVM 在 Linux 环境下 Attach 操作的前因后果,以及 JVM 为此而设计并实现的解决方案,通过本文,我希望能够讲述清楚如下三个主要方面的内容。 原发布:我的博客 一...

从精于一开始
昨天
0
0
【转】JPDA:Java平台调试架构(常用的远程调试方法)

最近使用WTP的Server功能很不爽,连tomcat服务器时java类中的任何改动都要重启服务器,一怒之下就改用JPDA了,以下是一些总结。 什么是JPDA Java Platform Debugger Architecture(JPDA:Java平...

晨曦之光
2012/03/09
0
0
Eclipse远程调试Tomcat

最近,一直在研究Tomcat的工作内幕,主要的方法就是参考《How Tomcat Works》 这本书和Tomcat 5.5.26的源代码。 Tomcat的代码结构还是比较清晰的,注释也比较全。但是代码毕竟是静态的,难以...

一枚Sir
2014/08/04
0
0
JAVA虚拟机起步-虚拟机调优

JAVA虚拟机起步OutOfMemory问题解决记录。 问题: JAVA虚拟机报错 # java.lang.OutOfMemoryError: requested 32756 bytes for ChunkPool::allocate. Out of swap space? # # Internal Error......

飓风2000
2014/03/01
0
0
SpringBoot 启动参数设置环境变量、JVM参数、tomcat远程调试

->博客已准备转移到博客园<- java命令的模版:java [-options] -jar jarfile [args...] 先贴一下我的简单的启动命令: java -Xms128m -Xmx256m -Xdebug -Xrunjdwp:server=y,transport=dt_soc......

Sgmder
01/24
0
2
tomcat和jboss下的debug模式设置

1、在widnow的tomcat下,找到{tomcat}bin目录下的catalina.bat中设置 set DEBUGOPTS= -Xdebug -Xrunjdwp:transport=dtsocket,server=y,address=8000,suspend=n 在linux的tomcat下,找到{tomc......

黑马王子
2011/04/08
0
0
java和C#里byte的取值范围

java里一个byte取值范围是-128~127, 而C#里一个byte是0~255. 首位不同. 但是底层I/O存储的数据是一样的, 比如, 十进制的100, 转换成java或者c#的byte, 都是1100110. 但是, 使用java的getByte...

喔喔兒
2011/03/30
0
0
java远程调试与JVM调优工具

Java远程调试方法: 1、被调试程序当作调试服务器(本地主动连接远程服务器,需要用如下命令让远程服务器jvm开启调试模式)。 -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8765 ...

chape
2013/12/24
0
0
从java程序员到CTO的成长路线图

很多新人不知道从事java开发,具体的发展路径是怎么样的,甚至很多人都不能区分程序猿和攻城师的区别。包括不少小白,从事java开发都半年,甚至1年了,对职业发展还没有清晰的认证。这非常不...

6pker
2013/10/24
0
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringBoot | 第十章:Swagger2的集成和使用

前言 前一章节介绍了mybatisPlus的集成和简单使用,本章节开始接着上一章节的用户表,进行Swagger2的集成。现在都奉行前后端分离开发和微服务大行其道,分微服务及前后端分离后,前后端开发的...

oKong
今天
5
0
Python 最小二乘法 拟合 二次曲线

Python 二次拟合 随机生成数据,并且加上噪声干扰 构造需要拟合的函数形式,使用最小二乘法进行拟合 输出拟合后的参数 将拟合后的函数与原始数据绘图后进行对比 import numpy as npimport...

阿豪boy
今天
1
0
云拿 无人便利店

附近(上海市-航南路)开了家无人便利店.特意进去体验了一下.下面把自己看到的跟大家分享下. 经得现场工作人员同意后拍了几张照片.从外面看是这样.店门口的指导里强调:不要一次扫码多个人进入....

周翔
昨天
1
0
Java设计模式学习之工厂模式

在Java(或者叫做面向对象语言)的世界中,工厂模式被广泛应用于项目中,也许你并没有听说过,不过也许你已经在使用了。 简单来说,工厂模式的出现源于增加程序序的可扩展性,降低耦合度。之...

路小磊
昨天
165
1
npm profile 新功能介绍

转载地址 npm profile 新功能介绍 npm新版本新推来一个功能,npm profile,这个可以更改自己简介信息的命令,以后可以不用去登录网站来修改自己的简介了 具体的这个功能的支持大概是在6这个版...

durban
昨天
1
0
Serial2Ethernet Bi-redirection

Serial Tool Serial Tool is a utility for developing serial communications, custom protocols or device testing. You can set up bytes to send accordingly to your protocol and save......

zungyiu
昨天
1
0
python里求解物理学上的双弹簧质能系统

物理的模型如下: 在这个系统里有两个物体,它们的质量分别是m1和m2,被两个弹簧连接在一起,伸缩系统为k1和k2,左端固定。假定没有外力时,两个弹簧的长度为L1和L2。 由于两物体有重力,那么...

wangxuwei
昨天
0
0
apolloxlua 介绍

##项目介绍 apolloxlua 目前支持javascript到lua的翻译。可以在openresty和luajit里使用。这个工具分为两种模式, 一种是web模式,可以通过网页使用。另外一种是tool模式, 通常作为大规模翻...

钟元OSS
昨天
2
0
Mybatis入门

简介: 定义:Mybatis是一个支持普通SQL查询、存储过程和高级映射的持久层框架。 途径:MyBatis通过XML文件或者注解的形式配置映射,实现数据库查询。 特性:动态SQL语句。 文件结构:Mybat...

霍淇滨
昨天
2
0
开发技术瓶颈期,如何突破

前言 读书、学习的那些事情,以前我也陆续叨叨了不少,但总觉得 “学习方法” 就是一个永远在路上的话题。个人的能力、经验积累与习惯方法不尽相同,而且一篇文章甚至一本书都很难将学习方法...

_小迷糊
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部