- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章一篇文章带你入门java网络编程由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
。
通信的实现 。
ServerSocket用来监听来自客户端的连接,当没有连接时,它处于阻塞状态 。
客户端使用Socket连接到指定的服务器 。
。
。
/** * * InetAddressDemo * * */public class InetAddressDemo { public static void main(String[] args) throws IOException { InetAddress baidu = InetAddress.getByName("www.baidu.com"); System.out.println(baidu); System.out.println(baidu.getHostAddress());//获取主机地址 System.out.println(baidu.isReachable(1000));//是否可达 System.out.println("===================================================================================="); InetAddress local = InetAddress.getByAddress(new byte[]{127, 0, 0, 1}); System.out.println(local.getHostName());//获取主机名 System.out.println(local.isReachable(1000));//是否可达 }}
。
package javaserver.TcpServer;import JAVAClient.TcpClient;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintStream;import java.net.ServerSocket;import java.net.Socket;import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class tcpServer { public static ExecutorService threadPool= Executors.newFixedThreadPool(10); public static List<Socket> socketList= Collections.synchronizedList(new ArrayList<>()); public static void main(String[] args) {//// try {//// //接受客户端的请求// ServerSocket serverSocket=new ServerSocket(9000);// while (true){// Socket socket = serverSocket.accept();//封装了一些客户端的信息// System.out.println("请求;" + socket.toString());//// PrintStream ps=new PrintStream(socket.getOutputStream());// ps.println("welcome "+ socket.getInetAddress().getHostAddress());// socket.close();// }//// } catch (Exception e) {// e.printStackTrace();// }// } try { ServerSocket serverSocket = new ServerSocket(9000); while (true){ Socket socket = serverSocket.accept(); socketList.add(socket); threadPool.submit(new ThreadTask(socket)); } } catch (Exception e) { e.printStackTrace(); } }}class ThreadTask implements Runnable{ private Socket socket; private BufferedReader reader; public ThreadTask(Socket socket) { this.socket = socket; try { this.reader=new BufferedReader(new InputStreamReader(socket.getInputStream())); } catch (IOException e) { e.printStackTrace(); } } @Override public void run() { try { String line; while ((line=reader.readLine())!=null){ for (Socket client: tcpServer.socketList){ String from=socket.getInetAddress().getHostAddress()+":::"+socket.getPort(); String content= from+"说"+line; new PrintStream(client.getOutputStream()).println(content); } } } catch (Exception e) { e.printStackTrace(); } }}
package JAVAClient;import java.io.*;import java.net.Socket;import java.util.Scanner;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class TcpClient { public static ExecutorService threadPool= Executors.newFixedThreadPool(3); public static void main(String[] args) throws IOException {// Socket socket=new Socket("127.0.0.1",9000);// BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));// String s = br.readLine();// System.out.println(s); Socket socket=new Socket("127.0.0.1",9000); threadPool.submit(new ReadTask(socket)); threadPool.submit(new WriteTask(socket)); }}class ReadTask implements Runnable{ private Socket socket; private BufferedReader reader; public ReadTask(Socket socket) { this.socket = socket; try { this.reader=new BufferedReader(new InputStreamReader(socket.getInputStream())); } catch (IOException e) { e.printStackTrace(); } } @Override public void run() { try { String line; while ((line=reader.readLine())!=null){ System.out.println(line); } } catch (Exception e) { e.printStackTrace(); } }}class WriteTask implements Runnable{ private Socket socket; private PrintStream writer; public WriteTask(Socket socket) { this.socket = socket; try { writer=new PrintStream(socket.getOutputStream()); } catch (IOException e) { e.printStackTrace(); } } @Override public void run() { Scanner scanner = new Scanner(System.in); String line; while ((line=scanner.nextLine())!=null){ writer.println(line); } }}
。
服务端 。
package javaserver.TcpServer;import java.net.*;import java.util.ArrayList;import java.util.List;import java.util.Scanner;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class UdpServer { public static ExecutorService threadPool= Executors.newFixedThreadPool(10); public static List<InetSocketAddress> addressesList=new ArrayList<>(); public static void main(String[] args) { try { DatagramSocket socket=new DatagramSocket(9001); // 随时通知 threadPool.submit(new SendTask(socket)); //接受访问 并且记录 byte[] buffer=new byte[1024]; DatagramPacket packet=new DatagramPacket(buffer,buffer.length); while (true){ socket.receive(packet); addressesList.add((InetSocketAddress) packet.getSocketAddress()); } } catch (Exception e) { e.printStackTrace(); } }}class SendTask implements Runnable{ private DatagramSocket socket; public SendTask(DatagramSocket socket) { this.socket = socket; } @Override public void run() { try { Scanner scanner = new Scanner(System.in); String line; while ((line= scanner.nextLine())!=null){ for (InetSocketAddress isa:UdpServer.addressesList){ byte[] buffer=line.getBytes(); DatagramPacket packet=new DatagramPacket(buffer,buffer.length,isa.getAddress(),isa.getPort()); socket.send(packet); } } } catch (Exception e) { e.printStackTrace(); } }}
客户端 。
package JAVAClient;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class UdpClient { public static ExecutorService threadPool= Executors.newFixedThreadPool(3); public static void main(String[] args) { try { DatagramSocket socket=new DatagramSocket();// 注册 DatagramPacket packet=new DatagramPacket(new byte[]{1},1, InetAddress.getByName("127.0.0.1"),9001); socket.send(packet);// 接收 threadPool.submit(new ReceiveTask(socket)); } catch (Exception e) { e.printStackTrace(); } }}class ReceiveTask implements Runnable{ private DatagramSocket socket; public ReceiveTask(DatagramSocket socket) { this.socket = socket; } @Override public void run() { try { byte[] buffer=new byte[1024]; DatagramPacket packet=new DatagramPacket(buffer,buffer.length); while (true){ socket.receive(packet); String line =new String(packet.getData(),0, packet.getLength()); System.out.println(line); } } catch (Exception e) { e.printStackTrace(); } }}
。
本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注我的更多内容! 。
原文链接:https://blog.csdn.net/weixin_51455343/article/details/119330130 。
最后此篇关于一篇文章带你入门java网络编程的文章就讲到这里了,如果你想了解更多关于一篇文章带你入门java网络编程的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在尝试创建一个 Django 网站,每次在本地主机上运行/articles/api/article 页面时:我都会收到此回溯: Environment: Request Method: GET R
我正在尽最大努力理解开放图谱协议(protocol)中的一切含义阅读 FB page在上面和 OGP Page .这在 FB 和 OGP 的世界中究竟意味着什么: Note that the Open
我的 HTML/CSS 中存在页脚与文章内容重叠的问题。是的,我一直在网上搜索但似乎没有任何效果,我希望你知道它有什么问题。我在这里做了一个codepen: CodePen LINK
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
我可以将变量作为警报显示在函数中,但无法将变量传递给文章。我做错了什么? 我知道“a”保存了正确的信息,因为我已经通过警报显示了它。 我尝试使用以下方式传递变量:placeholderContent.
这个问题已经有答案了: Rails article helper - "a" or "an" (6 个回答) 已关闭 3 年前。 是否有类似 [#pluralize in ActiveSupport]
这个问题已经有答案了: Rails article helper - "a" or "an" (6 个回答) 已关闭 3 年前。 是否有类似 [#pluralize in ActiveSupport]
我有以下型号。 Book has Articles (Article has foreign key to Book) Article has Images (Article has upto #ma
我创建了一个页面,该页面显示了单个 类别下的所有帖子,即如果我单击类别音乐,我将获得与音乐类别相关的所有文章。 但我的目标是创建一个过滤选项,它可以过滤掉某些类别,并且只显示与您过滤的类别相关的所有帖
我使用这样的代码: $query = "SELECT introtext FROM #__content WHERE alias = '$alias'"; $db->setQuery($query);
我在主页上设置了一些特色文章。显示的所有文章似乎都剩下太多填充。我知道足以进入 css 并在 layout.css 上编辑 .itembody 的填充或边距,但似乎没有任何改变。我希望我的文章通过模块
ORM 中存储文章及其修订的最佳实践是什么?当我自己用SQL存储时,我曾经有以下结构: articles [id, parent_id, name, text] 通过parent_id,我可以轻松识
我的 HTML : Interest About Interest
我正在用jade构建一个nodejs、express、mongodb博客。 我的文件夹结构是:项目/ 模块/ 观点/ 索引.jade 应用程序.js 文章提供者内存.js 文章provider-mon
我的问题比较具体,至少对我来说是这样。具体是因为在做了很多搜索之后我找不到任何有用的东西。因此,正如标题所说,我正在寻找一种算法,它会发现输入中给出的两篇文章是否“匹配”,但不是通常的字符串匹配意义上
关闭。这个问题是off-topic .它目前不接受答案。 9年前关闭。 锁定。这个问题及其答案是locked因为这个问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我无法弄清楚动态编程的原
我有这个问题。我正在建立一个社交网站,我必须在两栏中创建帖子。父容器是一个部分,元素“post”是样式为 float: left 的文章。我如何让滑到那些较短的下方创建的空白空间的帖子? 最佳答案 c
这里有几个关于文件与数据库的问题,但我仍然不确定使用什么以及为什么在我的案例中应该使用它。 我的网站上有很多 HTML 文章(长度在几百到几千字之间)。在数据库 (MySQL) 中,我有一个没有搜索索
微信公众号文章 Semantic Kernel —— LangChain 的替代品? [1] ,它使用的示例代码是Python ,他却发了这么一个疑问: 支持的语言对比(因为 Sem
我想编写一个 polymer 元素来显示一些 WordPress 文章。 http://www.jsv-lippstadt.de/?json=get_category_posts&slug=app
我是一名优秀的程序员,十分优秀!