当前位置: 首页 > news >正文

北京网站设计公司youx成都柚米科技15wordpress仿都市头条

北京网站设计公司youx成都柚米科技15,wordpress仿都市头条,重庆最大本地论坛,智赢erp系统一、网络编程是什么#xff1f; 在网络通信协议下#xff0c;不同计算机上运行的程序#xff0c;进行数据传输。 应用场景#xff1a;即时通讯、网游对战、金融证券、国际贸易、邮件、等等。 不管是什么场景#xff0c;都是计算机与计算机之间通过网络进行数据传输。 …一、网络编程是什么 在网络通信协议下不同计算机上运行的程序进行数据传输。 应用场景即时通讯、网游对战、金融证券、国际贸易、邮件、等等。 不管是什么场景都是计算机与计算机之间通过网络进行数据传输。 Java中可以使用java.net包下的技术轻松开发出常见的网络应用程序。 二、常见的软件架构 常见的软件架构有哪些 CS/BS。 即Client/Server 和 Browser/Server模式 通信的软件架构CS/BS的各有什么优缺点和区别 CS客户端服务端模式都需要开发客户端 BS浏览器服务器模式不需要开发客户端 CS适合定制专业化的办公类软件IDEA、网游 BS适合移动互联网应用可以在任何地方随时访问系统 三、网络编程三要素 IP设备在网络中的地址是唯一的标识端口号应用程序在设备中唯一标识协议数据在网络中传输的规则常见的协议游UDP、TCP、HTTP、HTTPS、FTP 四、Socket编程Java Socket套接字使用TCP提供了两台计算机之间的通信机制。客户端程序创建一个套接字并尝试连接服务器的套接字。当连接建立的时候服务器会创建一个Socket对象。客户端和服务器可以通过对Socket对象写入和读取来进行通信。 java.net.Socket类代表一个套接字并且java.net.ServerSocket类为服务器程序提供了一种监听客户端并与他们建立连接的机制。 以下步骤在两台计算机之间使用Socket建立TCP连接出现 服务器实例化一个ServerSocket对象表示通过服务器端口通信。ServerSocket本质就是监听端口等待Socket对象连接服务器调用ServerSocket类的accept()方法该方法将一直等待直到一个客户端连接到服务器上给定的端口。服务器ServerSocket监听等待连接的过程中客户端创建一个Socket对象并指定该Socket要连接到的服务器的名称和端口。Socket类的构造函数试图将客户端连接到指定的服务器和端口号。如果通信被建立则在客户端创建一个 Socket 对象能够与服务器进行通信。在服务器端accept() 方法返回服务器上一个新的 socket 引用该 socket 连接到客户端的 socket。 连接建立后通过使用 I/O 流在进行通信每一个socket都有一个输出流和一个输入流客户端的输出流连接到服务器端的输入流而客户端的输入流连接到服务器端的输出流。TCP 是一个双向的通信协议因此数据可以通过两个数据流在同一时间发送。 五、ServerSocket类的方法 服务器应用程序通过使用 java.net.ServerSocket 类以获取一个端口,并且侦听客户端请求。 ServerSocket 类有四个构造方法 序号方法描述1public ServerSocket(int port) throws IOException 创建监听特定端口的服务器套接字。2public ServerSocket(int port, int backlog) throws IOException 利用指定的 backlog 创建服务器套接字并将其绑定到指定的本地端口号。3public ServerSocket(int port, int backlog, InetAddress address) throws IOException 使用指定的端口、侦听 backlog 和要绑定到的本地 IP 地址创建服务器。4public ServerSocket() throws IOException 创建非绑定服务器套接字。 创建非绑定服务器套接字。 如果 ServerSocket 构造方法没有抛出异常就意味着你的应用程序已经成功绑定到指定的端口并且侦听客户端请求。 这里有一些 ServerSocket 类的常用方法 序号方法描述1public int getLocalPort() 返回此套接字在其上侦听的端口。2public Socket accept() throws IOException 侦听并接受到此套接字的连接。3public void setSoTimeout(int timeout) 通过指定超时值启用/禁用 SO_TIMEOUT以毫秒为单位。4public void bind(SocketAddress host, int backlog) 将 ServerSocket 绑定到特定地址IP 地址和端口号。 六、Socket 类的方法 java.net.Socket 类代表客户端和服务器都用来互相沟通的套接字。客户端要获取一个 Socket 对象通过实例化 而 服务器获得一个 Socket 对象则通过 accept() 方法的返回值。 Socket 类有五个构造方法. 序号方法描述1public Socket(String host, int port) throws UnknownHostException, IOException. 创建一个流套接字并将其连接到指定主机上的指定端口号。2public Socket(InetAddress host, int port) throws IOException 创建一个流套接字并将其连接到指定 IP 地址的指定端口号。3public Socket(String host, int port, InetAddress localAddress, int localPort) throws IOException. 创建一个套接字并将其连接到指定远程主机上的指定远程端口。4public Socket(InetAddress host, int port, InetAddress localAddress, int localPort) throws IOException. 创建一个套接字并将其连接到指定远程地址上的指定远程端口。5public Socket() 通过系统默认类型的 SocketImpl 创建未连接套接字 当 Socket 构造方法返回并没有简单的实例化了一个 Socket 对象它实际上会尝试连接到指定的服务器和端口。 下面列出了一些感兴趣的方法注意客户端和服务器端都有一个 Socket 对象所以无论客户端还是服务端都能够调用这些方法。 序号方法描述1public void connect(SocketAddress host, int timeout) throws IOException 将此套接字连接到服务器并指定一个超时值。2public InetAddress getInetAddress() 返回套接字连接的地址。3public int getPort() 返回此套接字连接到的远程端口。4public int getLocalPort() 返回此套接字绑定到的本地端口。5public SocketAddress getRemoteSocketAddress() 返回此套接字连接的端点的地址如果未连接则返回 null。6public InputStream getInputStream() throws IOException 返回此套接字的输入流。7public OutputStream getOutputStream() throws IOException 返回此套接字的输出流。8public void close() throws IOException 关闭此套接字。 例子(一)Socket 实例 1. 服务端 如下的 MySocketServer 是一个服务端程序该程序通过 socket 连接到服务器并发送一个请求然后等待一个响应。 import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner;public class MySocketServer extends Thread{private ServerSocket serverSocket;public MySocketServer(int port)throws IOException {//创建ServerSocket监听端口portserverSocket new ServerSocket(port);//设置等待时间10000毫秒没有监听到Socket连接该端口就报错serverSocket.setSoTimeout(10000);}public void run(){try{//ServerSocket等待连接链接成功就创建一个与客户端对等通信的socketSocket server serverSocket.accept();System.out.println(客户server.getLocalAddress()连接成功);//获取Socket的输入流输出流DataInputStream inputStream new DataInputStream(server.getInputStream());DataOutputStream outputStream new DataOutputStream(server.getOutputStream());while(true){//从流中获取信息String msg inputStream.readUTF();//当客户端传递的信息为ends时结束。if(msg.equals(ends)) break;//服务端显示流中的信息System.out.println(msg);}server.close();}catch(Exception ex){ex.printStackTrace();}}public static void main(String[] args){Scanner scanner new Scanner(System.in);try{System.out.println(请输入服务端绑定端口);//运行线程让服务端异步运行这样可以让主程序继续干自己的事Thread t new MySocketServer(scanner.nextInt());t.run();}catch(Exception ex){ex.printStackTrace();}} }2. 客户端 import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.util.Scanner;public class MySocketClient{public static void main(String[] args){try{Scanner keyboard new Scanner(System.in);System.out.println(请输入连接主机的IP地址);String host keyboard.nextLine();System.out.println(输入主机host 的端口号);int port keyboard.nextInt();//创建Socket并尝试连接 IPhost 端口port的服务端Socket client new Socket(host,port);InputStream in client.getInputStream();OutputStream out client.getOutputStream();DataInputStream inputStream new DataInputStream(in);DataOutputStream outputStream new DataOutputStream(out);while(true){String msg keyboard.nextLine();outputStream.writeUTF(msg);//当输入了ends时客户端关闭socket服务端也关闭socket二者结束通信。if(msg.equals(ends))break;}client.close();}catch(Exception ex){ex.printStackTrace();};} }3. 测试结果 例子(二)聊天室 1. 服务端 服务端使用while循环的添加Socket用户每个用户有自己独立的线程(异步性使各个用户可以同时输出输入的同时服务端能够继续监听端口) import java.io.DataInputStream; import java.io.DataOutputStream; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList;public class ChatRoomServer{private static ServerSocket serverSocket;private static ArrayListSocket clientList new ArrayListSocket();public static void main(String[] args){try{serverSocket new ServerSocket(8888);while(true){Socket client serverSocket.accept();clientList.add(client);//TODO:开启客户端线程进行异步聊天ClientThread ct new ClientThread(client,clientList);ct.start();}}catch(Exception ex){ex.printStackTrace();}finally {try{if(serverSocket ! null)serverSocket.close();}catch(Exception ex){ex.printStackTrace();}}} }class ClientThread extends Thread{private Socket client null;private ArrayListSocket clientList;public ClientThread(Socket s,ArrayListSocketss){client s;clientList ss;}public void run(){DataInputStream input null;DataOutputStream output null;try{input new DataInputStream(client.getInputStream());String rec null;String send null;while(true){if(!client.isClosed()){rec input.readUTF();System.out.println(服务端接收到数据rec);clientList.trimToSize();String[] param rec.split();//将输入进行一些封装if($start$.equals(param[1])){send param[0] 进入聊天室;}else{send param[0] 说: param[1];}//将非取消信号的数据发送出去if(!($ends$.equals(param[1]))){for(Socket socket : clientList){if(!socket.isClosed()){output new DataOutputStream(socket.getOutputStream());output.writeUTF(send);}}}else{for(Socket socket : clientList){if(socket! client !socket.isClosed()){output new DataOutputStream(socket.getOutputStream());output.writeUTF(param[0]已退出聊天室);}}output new DataOutputStream(client.getOutputStream());output.writeUTF($ends$);client.close();input.close();output.close();}}}}catch(Exception ex){ex.printStackTrace();}} }2. 客户端 import java.io.DataInputStream; import java.io.DataOutputStream; import java.net.Socket; import java.util.Scanner;public class ChatRoomClient {public static final String ip 127.0.0.1;public static final int port 8888;public Socket socket null;public DataInputStream input null;public DataOutputStream output null;public Scanner keyboard new Scanner(System.in);public String send;public String name;public void start(){try{System.out.println( ################ 欢迎进入Socket聊天室 ################ );System.out.println(输入您在聊天室的昵称: );name keyboard.nextLine();socket new Socket(ip,port);input new DataInputStream(socket.getInputStream());output new DataOutputStream(socket.getOutputStream());send name $start$;System.out.println( ################ 进入聊天室成功 ################ );System.out.println(如需退出聊天室,输入$ends$即可....);output.writeUTF(send);//TODO: 编写聊天的线程MsgThread mt new MsgThread(output,name,input);mt.start();while(true){String rec input.readUTF();if($ends$.equals(rec)){System.out.println( ################ 退出聊天室成功 ################ );input.close();output.close();socket.close();System.exit(0);}else{System.out.println(rec);}}}catch(Exception ex){ex.printStackTrace();}finally {try{if(socket! null){socket.close();input.close();output.close();}}catch (Exception ex){ex.printStackTrace();}}}public static void main(String[] args){ChatRoomClient client new ChatRoomClient();client.start();} } class MsgThread extends Thread{private DataInputStream input;private DataOutputStream output;private Scanner keyboard new Scanner(System.in);public static String name;public MsgThread(DataOutputStream o,String n,DataInputStream i){output o;input i;name n;}public void run(){ChatRoomClient client new ChatRoomClient();try{while(true){String send name keyboard.nextLine();output.writeUTF(send);}}catch(Exception ex){ex.printStackTrace();}finally {System.out.println(sfef);}} } 3. 测试结果
http://www.hn-smt.com/news/76258/

相关文章:

  • 专转本机构选哪家?2025年主流教育机构实力解析
  • 内置私护益生菌管用吗?幻颜之约黑白片益生菌如何精准调理菌群
  • 2025 年佛山人像摄影培训推荐榜:路人贾摄影讲堂(佛山分公司)排名第一、摄影十杰创办
  • 渲染管线
  • 评价高的灵活办公空间公司推荐排行榜单?灵活办公空间品牌 灵活办公空间公司 灵活办公空间推荐 灵活办公空间出租 灵活办公空间租赁
  • Skywalking 链路追踪
  • Xbox Video Player Kodi All In One
  • 可靠的袋装骆驼奶粉工厂口碑推荐榜单?袋装骆驼奶粉工厂 袋装骆驼奶粉品牌 袋装骆驼奶粉牌子 袋装骆驼奶粉企业 袋装骆驼奶粉公司 袋装骆驼奶粉源头工厂
  • NVIDIA DriveOS 推动新一代智能汽车实现突破 - 实践
  • 2025年新疆高三艺术补习班学校权威推荐榜单:新建高三艺术集训班/新疆高三复读学校/新疆高三艺术学校精选
  • 实验四 组合与继承
  • 评价高的提分产品哪家靠谱? 提分产品哪家强 提分产品怎么选择 提分产品哪家好 提分产品哪个品牌好 提分产品怎么选购 提分产品 提分产品品牌 提分产品公司 提分产品机构
  • 可靠的雨棚品牌哪家靠谱?雨棚品牌 雨棚公司 雨棚产品 雨棚供应厂家 雨棚工厂 雨棚厂家 雨棚生产厂家 雨棚源头厂家
  • 使用浏览器开发者工具截网页屏(chrome)
  • 市面上靠谱的瑜伽垫品牌推荐排行榜单?瑜伽垫品牌 瑜伽垫公司 瑜伽垫供应厂家 瑜伽垫工厂 瑜伽垫厂家 瑜伽垫生产厂家 瑜伽垫源头厂家 瑜伽垫供应商 瑜伽垫销售厂家
  • 2025年十大靠谱的网络推广培训公司推荐,网络推广培训推荐企
  • 靠谱的铝包木门窗厂家排行榜?铝包木门窗公司 铝包木门窗厂家 铝包木门窗工厂 铝包木门窗生产厂家 铝包木门窗供应商 铝包木门窗生产商 铝包木门窗加工厂 铝包木门窗源头厂家 铝包木门窗直销厂家
  • 中医师承选哪个机构靠谱?——在杭州做了三个月功课后的真实对比结论
  • 记录一次Oracle日志listener.log文件大小超过4G后出现Tomcat服务启动一直报错的原因【ORACLE】 - 指南
  • 2025年长三角地区研磨机源头厂家哪家专业、研磨机厂家哪家好
  • 2025年期现结合管理系统软件公司十大排行榜,知名厂商新测评
  • 退役了
  • 5-7 六度空间 (30分)
  • 2025年衡水口碑不错的高性价比婚恋介绍专业企业排行榜,婚恋
  • 2025年稳定性法兰工厂权威推荐榜单:钢衬活套法兰/一体法兰‌/PPH法兰‌源头工厂精选
  • 武汉汽车后市场线上代运营公司排名推荐,武汉车视界信息服务有限
  • 2025年度太原成人电气自动化培训班口碑推荐,专业介绍与初级
  • Java的jstat命令使用详解
  • 详细介绍:下拉电阻的运用与心得
  • 20232306 2025-2026-2 《网络与系统攻防技术》实验七实验报告