加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Java线程及TCP编程

发布时间:2021-05-21 07:06:22 所属栏目:大数据 来源: https://www.jb51.cc
导读:线程 进程由线程组成,多线程可以实现多个任务的同时运行,是网络编程的必要一环 普通线程 1 class Mythread implements Runnable{ 2 private String name; 3 public Mythread(String nn){ 4 this .name=nn; // 对象标识 5 } 6 7 @Override 8 public void ru

线程

进程由线程组成,多线程可以实现多个任务的同时运行,是网络编程的必要一环

普通线程

 1 class Mythread implements Runnable{
 2     private String name;
 3     public Mythread(String nn){
 4         this.name=nn;//对象标识
 5     }
 6 
 7     @Override
 8     public void run() {
 9         启动线程后自动执行的内容
10         for(int i=0;i<100;i++) {
11             try {
12                 Thread.sleep(200);
13                 System.out.println(name+"===>"+i);
14             } catch (InterruptedException e) {
15                 e.printStackTrace();
16             }
17         }
18     }        
19 }
20 
21 class Main{
22     static  main(String[] args) {
23         Thread t1=new Thread(new Mythread("A"));创建线程对象1
24         Thread t2=new Mythread("B"));创建线程对象2
25         t1.start();启动线程
26         t2.start();
27 28 }

匿名线程

 3         匿名线程-----------
new Thread() {
 5            6              7              8                  9                 Thread.sleep(20010                 System.out.println("===>"+11                 } 12 13                  }
14          }
16         }.start();启动
18 }

TCP编程

TCP客户端
连接服务器,可以实现连接错误判断、接收错误判断、服务器关闭判断

import java.io.InputStream;
 2  java.io.OutputStreamWriter;
 3  java.io.PrintWriter;
 4  java.net.Socket;
 MySocket{
 6      Socket sock;
 7      InputStream reader;
 PrintWriter writer;    
 9     private boolean Runtobool;
10     启动socket客户端
11      MySocket() {
12         连接socket
13         {
14         sock=new Socket("192.168.2.110",800115         writer=new PrintWriter(new OutputStreamWriter(sock.getOutputStream()));获取输出流
16         reader=sock.getInputStream();获取输入流获取输入流
17         写数据,发送数据
18         writer.write("-东小东-"        writer.flush();
20         开始读数据
21         Runtobool=true;
22         startServ();
23         }(Exception e){
24             Runtobool=false25             System.out.println("open socket err"        }    
28     接收数据函数
29      startServ(){
30         匿名线程
31          Thread(){
32          run(){
33         34         接收缓冲区
35         byte[] bytes = new byte[1024]; 
36         while(Runtobool){
37         接收函数,此函数会阻塞
38         while((reader.read(bytes,bytes.length))!=-1){
39             String datax=new String(bytes,"gbk"40             System.out.println("收到数据:"+datax);
41             bytes = byte[1024];清空数组的内容,必须
42 43         接收为空时进入
44         System.out.println("server break err"45         Runtobool=46 47         }48             Runtobool=49             System.out.println("rev socket err"50         }}
51        }.start();
52 53 54 55     56          MySocket();
57 58 }

TCP服务器
实现单个客户端接入

 java.net.ServerSocket;
 6  ServerSocket sockser;
12     13     14         15         16         sockser=new ServerSocket(8001);监听端口8001
17         sock=sockser.accept();阻塞等待客户接入
18         writer=19         reader=sock.getInputStream();21         writer.write("-东小东-"23         24         Runtobool=25 26         }27             Runtobool=28             System.out.println("open socket err"29 30 31     32     39         40         41         42             String datax=43             System.out.println(sock.getRemoteSocketAddress()+"==>收到数据:"+44             bytes = 45 46         47         System.out.println("client server break err"48         Runtobool=49 50         }51             Runtobool=52             System.out.println("rev socket err"55 56 58     59         60 61 }

TCP服务器改进版
可同时接收多个连接

11         14         ServerSocket sockser=while(16          Socket sock=sockser.accept();         startServ(sock);
19         }20             System.out.println("open socket err"          }
23         }.start();
24 25     26      startServ(Socket sock){
27         28             PrintWriter writer=29             InputStream reader=sock.getInputStream();30             31             writer.write("-东小东-"32             writer.flush();
33             34             35             36             boolean Runtobool=;    
37             38             39             ];
40             41             42             43                 String datax=44                 System.out.println(sock.getRemoteSocketAddress()+"==>收到数据:"+45                 bytes = 47             48             System.out.println("client server break err"49             Runtobool=51             }52                 Runtobool=53                 System.out.println("rev socket err"            }}
           }.start();            
56 
57         }(Exception e) {
58             System.out.println("异常-----"59 61 62 63     64         65 66 }

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读