介绍
这篇文章给大家分享的是有关怎样实现插座网络编程的多线程的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
怎样实现插座网络编程的多线程,分享给大家
TCP、UDP、IP地址的基本介绍:
- <李>
TCP
李>是可靠的连接。这个可靠的意思就是得有明确的连接对象才行,就像是打电话,拨打的号码必须得在服务中有人接,这个网络会话才算是建立了。
- <李>
UDP:
李>不可靠的连接。不可靠的意思就是不太确定这个会话最后是不是真的送达你要连接的对象那里去了,就像是寄快递,把快递地址填上了,但是说不好半路会出点啥幺蛾子,能不能安全送达不一定。
- <李>
IP地址:
李>就是计算机的身份证。身份证号前六位数字是地址码(可以知道是哪个省哪个城市哪个县城),接着八位数字是出生日期码,IP地址也是这样的,它是由网络地址(确定是哪个网络)和主机地址(网络中的哪个主机)组成的。
本机地址:localhost等价于127.0.0.1
下面的例子是基于TCP协议进行的。
public class Client { ,public static  void main (String [], args), throws 异常{//打才能开一个套接字,准备发送请求 Socket 才能;Socket =, new 插座(“localhost",, 9996);//得先建立连接,就是所谓的TCP是建立可靠的连接 System.out.println才能(“尊敬的VIP客户,请求数据小分队已准备好,请输入您的请求:“);//向才能服务端发送带着客户端请求的数据,这个请求数据是从键盘读入的,发送给服务端是以PrintWriter的形式包装 PrintWriter 才能;out =new PrintWriter (socket.getOutputStream(),真的);//输才能入流getInputStream(),单独开一个线程在接收类中完成接收服务器发来的数据 Thread 才能;t =, new 线程(new 接收(插座)); t.start才能(); Scanner 才能;Scanner =new 扫描仪(系统);//键盘输入 而才能(scanner.hasNextLine ()) { ,,out.println (scanner.nextLine());//将从键盘输入的数据发送出去 ,,} ,} } public class  Receive implements Runnable  { ,private Socket 插座; ,public 接收(Socket 插座),{ this.socket才能=套接字; ,} ,@Override ,public void  run (), { try {才能 ,,Scanner Scanner =new 扫描仪(socket.getInputStream());//接收数据 ,,String str =零; ,,,(真的){ ,,,str=scanner.nextLine (); ,,,System.out.println(“服务器说:“+ str);//打印接收的数据 ,,} ,,},catch (IOException e), { ,,e.printStackTrace (); ,,} ,} }
public class Server { ,public static  void main (String [], args), throws 异常{ ServerSocket 才能;server =, new 考察(9996);//在端口9996开一个服务,监听客户端发来的请求,准备接收客户端发来的请求数据 System.out.println才能(“服务端准备完毕,随时待命接收请求!“); Socket 才能;Socket =server.accept();//只有当有客户端请求并连接时,才回返回一个套接字对象,这个对象就是带着客户端请求的那个插座对象//创才能建一个PrintWriter的实例对象出来来完成服务端向客户端的输出数据的任务, PrintWriter 才能;out =, new PrintWriter (socket.getOutputStream(),真的);//单才能独开一个线程接收从客户端过来的请求,在Receive1类中完成数据的接收 Thread 才能;t =, new 线程(new Receive1(插座)); t.start才能();/*才能一定要理解套接字是一个用于机器之间通信的类*///发才能送数据给客户端 Scanner 才能;Scanner =, new 扫描仪(系统);//键盘输入服务端要发给客户端的数据 而才能(scanner.hasNextLine ()) { ,,out.println (scanner.nextLine());//将键盘输入的服务端要发给客户端的数据封装在PrintWriter类的对象中 ,,} ,} }
public class Receive1 implements Runnable { ,private Socket 插座; ,public Receive1 (Socket 插座),{ this.socket才能=插座;//在服务端接收客户端发来的数据需要调用Receive1()这个方法,就会得到一个套接字对象,这个对象就是携带着客户端请求的插座 ,} ,@Override ,public void  run (), { try {才能 ,,Scanner 扫描仪=new 扫描仪(socket.getInputStream());//获得客户端从键盘接收的输入流 ,,String str =,空; ,,,(真的){ ,,,str=scanner.nextLine (); ,,,System.out.println(“客户端发来的数据:“+ str); ,,} ,,},catch (IOException e), { ,,e.printStackTrace (); }//才能接收数据 ,} }怎样实现插座网络编程的多线程