Java Socket实现客户端服务端之间的通信

Java Socket

  • Java Socket编程用于在不同JRE上运行的应用程序之间的通信。
  • Java Socket编程可以是面向连接的或无连接的。
  • Socket和ServerSocket类用于面向连接的套接字编程,DatagramSocketDatagramPacket类用于无连接套接字编程。

此Demo将进行单向客户端和服务器通信。客户端将消息发送到服务器,服务器读取消息并打印。在这里,使用了两个类:Socket和ServerSocket。Socket类用于通信客户端和服务器。通过此类,我们可以读写消息。ServerSocket类在服务器端使用。ServerSocket类的accept()方法将阻止控制台,直到客户端连接为止。客户端成功连接后,它将在服务器端返回Socket的实例。

在这里插入图片描述
Socket class
套接字只是机器之间通信的端点。Socket类可用于创建套接字。

重要方法

方法描述
1)public InputStream getInputStream()返回与此socket连接的InputStream。
2)public OutputStream getOutputStream()返回与此socket连接的OutputStream。
3)public synchronized void close()关闭这个socket

ServerSocket class
ServerSocket类可用于创建服务器套接字。该对象用于与客户端建立通信。

重要方法

方法描述
1) public Socket accept()返回socket,并在服务器和客户端之间建立连接。
2) public synchronized void close()关闭服务器socket

具体实现

MyServer.java

import java.io.*;  
import java.net.*;  
public class MyServer {  
public static void main(String[] args){  
try{  
ServerSocket ss=new ServerSocket(6666);  
Socket s=ss.accept();//建立连接 
DataInputStream dis=new DataInputStream(s.getInputStream());  
String  str=(String)dis.readUTF();  
System.out.println("message= "+str);  
ss.close();  
}catch(Exception e){System.out.println(e);}  
}  
}  

MyClient.java

import java.io.*;  
import java.net.*;  
public class MyClient {  
public static void main(String[] args) {  
try{      
Socket s=new Socket("localhost",6666);  
DataOutputStream dout=new DataOutputStream(s.getOutputStream());  
dout.writeUTF("Hello Server");  
dout.flush();  
dout.close();  
s.close();  
}catch(Exception e){System.out.println(e);}  
}  
}  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构-线性结构

一.线性结构 1.顺序线性表 1.1 线性结构是一种基本的数据结构,具有单一前驱和后继的数据关系描述。 1.2 线性表的存储结构分为顺序存储和链式存储。 1.3 顺序线性表的元素间的逻辑关系无需占用额外的空间来存储。 1.4 一般地,以LOC(a1a_1a1​)表示线性…

脑智前沿科普|虚拟现实如何欺骗你的大脑

来源:公众号(脑与心智毕生发展研究中心CLIMB)编辑:Yezi审阅:mingzlee7虚拟现实(Virtual reality, VR)就像被神奇地传送到另一个世界。这是一项令人兴奋的技术,但当我们戴上耳机后,我们很少停下来…

C++11新特性以及std::thread多线程编程

一 .C11新特性 1. auto 类型推导 1.1 当号右边的表达式是一个引用类型时,auto会把引用抛弃,直接推导出原始类型; 1.2 当号右边的表达式带有const属性时,auto不会使用const属性; 1.3 当const 和引用结合时,…

Linux下Java连接数据库出现 Access denied for user 'root'@'localhost' (using password: YES)错误

一、问题描述 centos 7 终端键入 mysql -u root -p 输入密码后可成功访问数据库,但使用IDEA编写Java代码实现数据库连接时却出现Access denied for user ‘root’‘localhost’ (using password: YES) 错误。 二、解决方法 在刚安装mysql时,系统会默认…

Zookeeper常用命令行及API

一、Zookeeper常用命令行 1.启动zookeeper客户端(在启动zookeeper集群后启动进行调试) zkCli.sh   2.查看帮助、操作历史 help、history 3.查看当前Znode的目录 ls /    ls2 /  (查看当前Znode的详细信息) 4.创建Znode (1)默认:create 路径 内容 create /Wy…

被骗两次?黄仁勋骗过世界的14秒,英伟达押宝未来的元宇宙……

来源:物联网智库在近期召开的计算机图形顶级会议ACM SIGGRAPH 2021 上,英伟达介绍了自研的3D仿真模拟和协作平台Omniverse,并放出了“合成版老黄”的打造过程。有媒体据此报道称——万万没想到,在3个月前的GTC大会中,厨…

QT清单打印程序

1.主要代码 //customer.h文件 #ifndef CUSTOMER_H #define CUSTOMER_H#include <QObject> #include <string>class Customer : public QObject {Q_OBJECT public:explicit Customer(QObject *parent nullptr);Customer(const Customer& customer);void setCo…

Linux下生成指定大小文件(命令+Java程序)

1、dd命令 of&#xff1a;fileName为文件名称&#xff0c;例如test.txt &#xff1b; bs&#xff1a;设置一次复制的大小&#xff0c;例如1M&#xff1b; count&#xff1a;设置复制次数&#xff0c;例如100&#xff1b; dd if/dev/zero of<fileName> bs<一次复制…

C语言之随机数函数( rand() )的使用方法

文章出自个人博客https://knightyun.github.io/2018/04/25/c-rand-number&#xff0c;转载请申明。 在程序设计中&#xff0c;难免会使用到随机值函数&#xff0c;其原理与语法大多类似&#xff0c;接下来以C语言为例介绍其随机值函数 rand() 用法。 原理 引用百度百科&#xf…

图灵奖得主杨立昆:人工智能比你更聪明吗?

来源&#xff1a;混沌巡洋舰人工智能常常被认为是一项将要颠覆世界的技术&#xff0c;从这一概念诞生至今的65年中&#xff0c;无数电影与小说塑造了各种经典的人工智能角色&#xff0c;AI &#xff08;Artificial Intelligence&#xff09;也很快成为人类未来世界蓝图中的重要…

(转)Windows系统、Linux系统 和 Mac OS操作系统 历史由来 与 区别?

目录 1 UNIX 由来 2 Linux 由来 3 Windows与Linux的主要区别 4 关于Linux的一些疑惑 参考资料 目前常见的三大操作系统&#xff1a;Windows系统、Linux系统 和 Mac OS操作系统。 首先&#xff0c;不管是Windows操作系统、Linux系统还是苹果的Mac OS操作系统&#xff0c;甚…

国务院公布《关键信息基础设施安全保护条例》

来源&#xff1a;中国政府网编辑&#xff1a;蒲蒲据中国政府网8月17日消息&#xff0c;《关键信息基础设施安全保护条例》已经2021年4月27日国务院第133次常务会议通过&#xff0c;现予公布&#xff0c;自2021年9月1日起施行。条例指出&#xff0c;国家对关键信息基础设施实行重…

hadoop碰到的 一个问题

在里面添加/usr/local/hadoop/etc/hadoop/log4j.properties log4j.logger.org.apache.hadoop.util.NativeCodeLoaderDEBUG 可以查看debug信息&#xff1a; [rootelk03 hadoop]# hdfs dfs -ls /19/02/26 01:19:37 DEBUG util.NativeCodeLoader: Trying to load the custom-built…

SpringBoot笔记整理(一)

SpringBoot笔记整理&#xff08;一&#xff09; SpringBoot笔记整理&#xff08;二&#xff09; SpringBoot笔记整理&#xff08;三&#xff09; SpringBoot笔记整理&#xff08;四&#xff09; 1、使用Spring Initializer快速创建Springboot项目 默认生成的Spring Boot项目&…

文章推荐 | 城市规划中城市信息学的研究进展

来源&#xff1a;北京城市实验室BCL随着计算机技术的飞速发展&#xff0c;城市信息学作为城市规划领域的一门新兴学科&#xff0c;逐渐引起学术界的关注。城市信息学的兴起给城市规划带来了新的压力&#xff0c;但它也提供了新的城市分析视角。在此背景下&#xff0c;专家小组概…

Matlab基础

一.入门基础 1.基本知识 1.1 输入命令 以分号结尾不会打印变量的值 x 1 y x;1.2 变量命名规则&#xff1a;以字母开头&#xff0c;并且仅包含字母、数字和下划线。 1.3 使用save命令将工作区中的变量保存到MAT文件的MATLAB特定格式文件中,文件名为datafile.mat。可以指定保…

3年规模翻7倍统治 5G、IoT时代,化合物半导体材料深度报告

来源 华西证券编辑&#xff1a;智东西内参作者&#xff1a;吴吉森 等随着 5G、IoT 物联网时代的来临&#xff0c;以砷化镓&#xff08;GaAs&#xff09;、氮化镓&#xff08;GaN&#xff09;、碳化硅&#xff08;SiC&#xff09;为代表的化合物半导体市场有望快速崛起。其中&am…

SpringBoot笔记整理(二)

SpringBoot笔记整理&#xff08;一&#xff09; SpringBoot笔记整理&#xff08;二&#xff09; SpringBoot笔记整理&#xff08;三&#xff09; SpringBoot笔记整理&#xff08;四&#xff09; Spring Boot与日志&#xff08;日志框架、日志配置&#xff09; 1、市面上的日志…

MATLAB图像处理基础

1.导入数据 1.1 使用readtable("")导入数据&#xff0c;并存储在表格中&#xff0c;使用axis equal可以校正坐标轴纵横比。 letter readtable("M.txt"); plot(letter.X,letter.Y) axis equal1.2 range(x)函数返回x的值的范围&#xff0c;即max(x) - min(…

BBWebImage 设计思路

BBWebImage 设计思路 BBWebImage 是高性能 Swift 图片组件&#xff0c;用于图片下载、缓存、编解码、编辑与展示。 GitHub 地址&#xff1a; https://github.com/Silence-GitHub/BBWebImage 效果图 下载、展示并缓存原图 下载、渐进式解码、编辑图片&#xff0c;缓存编辑后的图…