`
redstarofsleep
  • 浏览: 440013 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

知识点整理之Java Socket

    博客分类:
  • Java
阅读更多

依旧是自己平时用到的一些东西的整理

 

Socket客户端:

public class SocketClient {

	public static void main(String[] args) {
		Socket socket = null;
		OutputStream out = null;
		InputStream in = null;
		
		try {
			socket = new Socket();
			// connect and set timeout
			socket.connect(new InetSocketAddress("127.0.0.1",8333), 2000);
			in = socket.getInputStream();
			out = socket.getOutputStream();
			out.write("abcd".getBytes());
			out.flush();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				in.close();
				out.close();
				socket.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

 

Socket服务器端:

public class SocketServer {

	public static void main(String[] args) {
		
		try {
			// 实例化sSocket,参数为端口号port
			ServerSocket serverSocket = new ServerSocket(8333);
			while (true) {
				// 实例化Socket
				Socket socket = serverSocket.accept();
				// 新建线程TCPServer,并启动
				new Thread(new ServerSocketTask(socket)).start();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

 

public class ServerSocketTask implements Runnable {
	
	private Socket socket;
	
	public ServerSocketTask(Socket socket) {
		this.socket = socket;
	}

	@Override
	public void run() {
		// 定义输出流
		OutputStream output = null;
		// 定义输入流
		InputStream input = null;

		try {		

			// 初始化输入流
			input = this.socket.getInputStream();
			// 初始化输出流
			output = socket.getOutputStream();

			String message = null;
			
			while (true) {
				// 定义byte[]数组,大小为1024;
				byte[] buf = new byte[1024];
				// 从输入流中读取输入存入字节数组
				int len = input.read(buf);
				// 将字节数组转换成字符串
				message = new String(buf,0,len);
				//* 实际使用中这里要用System.arrayCopy把byte数组拼起来,判断到结束条件后再break
				System.out.println(message);
				// 向输出流写入SUCCESS返回给客户端
				output.write("SUCCESS".getBytes());
				// 输出流flush
				output.flush();
				// 跳出循环
				break;
			}
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}

}
分享到:
评论

相关推荐

    Java后端面试手册-Java基础知识

    Java基础知识:包括Java语言特性、面向对象编程、集合框架、异常处理等基础知识点。 数据库和SQL:涵盖数据库基础知识、SQL语句的编写和优化、数据库事务等相关内容。 Web开发:包括常用的Web开发框架(如Spring、...

    java面试笔试资料包括JAVA基础核心知识点深度学习Spring面试题等资料合集.zip

    JAVA核心知识点整理-282页 Java与哈希算法.docx Java中Lambda表达式的使用.docx JAVA多线程之线程间的通信方式.docx Java注解详解.docx Java线程池.docx JDK1.8Stream操作.docx JDK8有新特性.docx JVM堆三代.docx ...

    Java swing + socket + mysql 五子棋网络对战游戏.zip

    学习笔记:整理了Java语言在游戏开发中的核心知识点和常用技术,方便你随时查阅和学习。 适用人群: 这份资源包适用于所有对Java游戏开发感兴趣的朋友,无论你是计算机专业的学生,还是希望业余时间尝试游戏开发的...

    整理后java开发全套达内学习笔记(含练习)

    Socket [java] 网络套接字['sɒkit] stack n.堆栈 [stæk] (对应 heap 堆) statement 程序语句; 语句 ['steitmәnt]' n. 陈述,指令 subclass n.子类 ['sʌbklɑ:s]' (supertype 父类) switch (关键字) 选择语句。...

    JAVA面试题最全集

    一、Java基础知识 1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。 2.字符串的操作: 写一个方法,实现字符串的反转,如:输入abc,输出cba 写一个方法,实现字符串的替换,如:输入...

    高级java笔试题-python-job:Python面试相关知识点汇总个人整理

    面试知识点简单汇总(自测) 招聘网站的一般要求汇总(面试造火箭系列): 具备开发高并发引擎能力 熟悉HTTP,TCP/IP等常用协议原理 熟悉Docker相关理念及核心技术 精通SQL和NoSQL数据库体系架构设计及高可用性解决...

    基于JAVA的聊天室设计与实现

    总结介绍本次实训任务目标和内容,让学生有个概况的认识;复习强化相关知识;搜索整理相关资料,进行知识储备;学生形成自己的思路,根据共同点划分项目小组;熟练掌握TCP SOCKET编程技术;熟练掌握线程技术.

    java课程设计指导书.doc

    java课程设计指导书 课程设计指导书 前言 Java高级程序设计是计算机科学的基础理论知识,也是软件设计的技术基础。本课程 设计的性质是检验理论课学习的效果以及综合运用的能力,目的是训练学生进行复杂程 序设计的...

    基于javatcpsocket通信的拆包和装包源码-Android-:工作五年多了,一直没有仔细回顾过过去,正好现在将要离职时间比较空闲,整理

    工作五年多了,一直没有仔细回顾过过去,正好现在将要离职时间比较空闲,整理一下android方面的知识点   另外点名批评有道云,我整理笔记三次丢失大量笔记,总计浪费我26个小时的时间,其实后边还有不少,但是第三...

    史上最好传智播客就业班.net培训教程60G 不下会后悔

    传智播客认真钻研教学,对知识进行分类、整理、提炼精华,让学员在短时间内掌握ASP.Net技术。 ASP.Net中有一些技术是有局限性的,传智播客根据这些技术在企业中的实际应用情况进行了调整、补充。比如项目中几乎没有...

    易语言程序免安装版下载

    重新整理所有官方支持库的静态库,有望彻底解决链接时可能出现的符号冲突 5. 全面取消静态编译中的人为功能限制(此前有最多5个支持库同时参与静态链接等功能限制) 6. 公开易语言静态编译技术文档(参见sdk\...

Global site tag (gtag.js) - Google Analytics