文档章节

Java Socket

C-Kellen
 C-Kellen
发布于 2017/09/01 10:14
字数 398
阅读 20
收藏 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
粉丝 19
博文 106
码字总数 80242
作品 0
朝阳
程序员
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......

不道归来
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
06/15
0
0
JVM Attach实现原理剖析

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

从精于一开始
07/21
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

没有更多内容

加载失败,请刷新页面

加载更多

js实现产生n个随机数,并且随机数之和是固定值

function getrandom(minnum , maxnum ,total,size){ var num = total; //定义整数 var length= size; //定义多个整数的数量 var numArr = []; while(length > 1){ var rnd = Math.floor(Mat......

开源昕昕
10分钟前
1
0
精选Spring Boot三十五道必知必会知识点!

Spring Boot 是微服务中最好的 Java 框架. 我们建议你能够成为一名 Spring Boot 的专家。本文精选了三十五个常见的Spring Boot知识点,祝你一臂之力! 问题一 Spring Boot、Spring MVC 和 Sp...

Java填坑之路
12分钟前
2
0
MyBatis学习笔记

相关文档 mybatis深入理解(一)之 # 与 $ 区别以及 sql 预编译 MyBatis 处理sql中的 大于,小于,大于等于,小于等于

OSC_fly
13分钟前
0
0
Gradle从不同地方复制文件到一个文件夹/打zip包

复制 task copySDK(type: Copy, dependsOn: [":fatJarTask"]) { delete JAR_NAME delete SDK_OUT_PATH delete "$ROOT_BUILD_PATH/$SDK_ZIP_NAME" into('/jniLibs') {......

SuShine
13分钟前
0
0
CentOS关闭占用端口,修改Apache默认端口,并重启Apache

查找并关闭进程 在Linux系统中可以使用lsof命令和kill命令,两个命令配合查找并关闭占用端口的进程 查看某一端口使用情况的命令: lsof -i:端口号 效果如下,PID即进程的ID 根据PID关闭进程,...

临江仙卜算子
19分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部