文档章节

Java Socket

C-Kellen
 C-Kellen
发布于 2017/09/01 10:14
字数 398
阅读 24
收藏 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
粉丝 20
博文 106
码字总数 80242
作品 0
朝阳
程序员
私信 提问
JVM Attach实现原理剖析

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

从精于一开始
2018/07/21
0
0
Eclipse 远程调试 Java 程序

今天同事问我怎么远程调试 java 程序。我不会,那马上搜索看看。在被高度的程序中加个数据就行。然后 eclipse 调试时指定端口就行,太方便了。 比如,现在有一个代码: 把这个java 导出为 re...

鉴客
2010/08/05
1K
1
jdbc-internals-and-timeout-configuration

An application with a proper JDBC timeout can cut down the failure time. In this article we would like to talk about different kinds of timeout values and recommended timeout ap......

不道归来
2018/08/09
0
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
2018/06/15
0
0
SpringBoot 启动参数设置环境变量、JVM参数、tomcat远程调试

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

Sgmder
2018/01/24
0
2

没有更多内容

加载失败,请刷新页面

加载更多

数据库篇一

数据库篇 第1章 数据库介绍 1.1 数据库概述  什么是数据库(DB:DataBase) 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据...

stars永恒
11分钟前
0
0
Intellij IDEA中设置了jsp页面,但是在访问页面时却提示404

在Intellij IDEA中设置了spring boot的jsp页面,但是在访问时,却出现404,Not Found,经过查找资料后解决,步骤如下: 在Run/Debug Configurations面板中设置该程序的Working Directory选项...

uknow8692
昨天
2
0
day24:文档第五行增内容|每月1号压缩/etc/目录|过滤文本重复次数多的10个单词|人员分组|

1、在文本文档1.txt里第五行下面增加如下内容;两个方法; # This is a test file.# Test insert line into this file. 分析:给文档后增加内容,可以用sed 来搞定;也可以用while do done...

芬野de博客
昨天
2
0
深入理解JVM—JVM内存模型

深入理解JVM—JVM内存模型 我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存...

onedotdot
昨天
2
0
MVC、MVCS、MVVM、MVP、VIPER等这么多架构模式哪一个好呢?

在项目开启阶段,其中一个很重要的环节就是选架构。 那么面对目前已知的这么多架构模式我们该怎么选择呢?这确实是个很让人头疼的问题! 下面我就在这里梳理一下目前常见的一些架构模式。 先...

Java干货分享
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部