您的位置:首页 > 文旅 > 旅游 > 网页设计与制作教程 个人简历代码_设计师网站1688_5000人朋友圈推广多少钱_aso推广平台

网页设计与制作教程 个人简历代码_设计师网站1688_5000人朋友圈推广多少钱_aso推广平台

2024/10/5 16:29:34 来源:https://blog.csdn.net/sksnbdkdisbsnskd/article/details/142354892  浏览:    关键词:网页设计与制作教程 个人简历代码_设计师网站1688_5000人朋友圈推广多少钱_aso推广平台
网页设计与制作教程 个人简历代码_设计师网站1688_5000人朋友圈推广多少钱_aso推广平台

ip地址:唯一标识主机的地址

端口号:用于标识计算机上某个特定的网络程序

InetAddress类

方法说明
InetAddress InetAddress.getLocalHost()静态方法,获取本机InetAddress对象(主机名+ip地址)
InetAddress InetAddress.getByName("主机名")根据主机名或者域名获取ip地址对象(主机名+ip地址)/(域名+ip地址)
getHostName获取InetAddress对象的主机名
getHostAddress获取InetAddress对象的地址

InetSocketAddress抽象基类,子类SocketAddress

构造方法

 public SocketAddress(InetAddress inetAddress,int port){...}  //InetAddress对象+端口号

客户端(socket)

 
Socket socket = new Socket(String host,int port);   //IP,端口号OutputStream out = socket.getOutputStream();out.write("hello,Server");out.close();socket.close();

方法

 OutputStream getOutputStream()      //获取字节输出流对象IntputStream getInputStream()        //获取字节输入流对象

服务器端(SereverSocket)

 SereverSocket serever = new SereverSocket(int port);   //端口号  要求这个端口号没被占用,否则报异常Socket server = serever.accept();   //等待接收客户端的Socket通信连接,连接成功返回Socket对象与客户端建立端到端通信,当没                                      //有客户端连接这个端口会阻塞InputStream in = server.getInputStream();int i = 0;while((i = in.read())!=-1){System.out.print((char)i);}in.close();server.close();

如果要连续通话,在发送完一个数据的时候应该有个结束标记(没结束标记的话客户端或者服务端不知道什么时候发送结束,就会一直等待)

 socket.shutDownOutout();    //写信息结束socket.shutDownInput();     //读信息结束

UDP

  • 没有明确的服务端和客户端,演变成数据的发送端和接收端

  • 接收数据和发送数据通过DatagramSocket对象完成

  • 将数据封装到DatagramPacket对象/装包

  • 当接收到DatagramPacket对象,需要进行拆包,取出数据

  • DatagramSocket可以指定在哪个端口接收数据

无连接、面向数据报的特征,即每次都是没有建立连接,一次发送全部数据报一次接受全部数据报。

基于DatagramSocket类来创建数据报套接字,并使用DatagramPacket描述一个发送或接收数据报。(DatagramSocket类描述一个socket对象,本质是一个文件描述符,表示网卡设备的文件,通过读写socket文件的方式操作网卡

客户A(服务器端)

 import java.io.IOException;import java.net.*;​public class Server {​public void getServer() throws IOException {​InetSocketAddress inetSocketAddress = new InetSocketAddress("127.0.0.1",1111);DatagramSocket datagramSocket = new DatagramSocket(1111);byte[] bytes = new byte[1024];DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length);datagramSocket.receive(datagramPacket);String message = new String(datagramPacket.getData(),0,datagramPacket.getLength());System.out.println("接收到客户端发送信息:"+message);System.out.println("正在向客户端发送信息。。。。。。。。。");String response = "我是服务器端,能收到";//获取数据包中的ip地址InetAddress address = datagramPacket.getAddress();//获取数据包中的端口号int port = datagramPacket.getPort();DatagramPacket responsePacket = new DatagramPacket(response.getBytes(),0,response.getBytes().length,address,port);datagramSocket.send(responsePacket);System.out.println("发送成功!!!!!");datagramSocket.close();​}​public static void main(String[] args) throws IOException {Server server = new Server();server.getServer();}​}
 ​

客户B(客户端)

 import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetSocketAddress;​public class Client {​public void getClient() throws IOException {InetSocketAddress inetSocketAddress = new InetSocketAddress("127.0.0.1",1111);DatagramSocket datagramSocket = new DatagramSocket();System.out.println("发送信息。。。。。。。。。。。");String message = "我是客户端,能收到吗";DatagramPacket datagramPacket = new DatagramPacket(message.getBytes(),0,message.getBytes().length,inetSocketAddress);datagramSocket.send(datagramPacket);System.out.println("发送成功!!");​byte[] bytes = new byte[1024];DatagramPacket responsePacket = new DatagramPacket(bytes,0,bytes.length);datagramSocket.receive(responsePacket);String response = new String(responsePacket.getData(),0,responsePacket.getLength());System.out.println("服务器发送信息"+response);​datagramSocket.close();}​public static void main(String[] args) throws IOException {Client client = new Client();client.getClient();}}​

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com