国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java基于socket實現的客戶端和服務端通信功能完整實例

Java基于socket實現的客戶端和服務端通信功能完整實例

2021-05-04 12:28愛代碼也愛生活 Java教程

這篇文章主要介紹了Java基于socket實現的客戶端和服務端通信功能,結合完整實例形式分析了Java使用socket建立客戶端與服務器端連接與通信功能,需要的朋友可以參考下

本文實例講述了java基于socket實現的客戶端和服務端通信功能。分享給大家供大家參考,具體如下:

以下代碼參考馬士兵的聊天項目,先運行chatserver.java實現端口監聽,然后再運行chatclient.java

客戶端實例

chatclient.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package socketdemo;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
public class chatclient extends frame {
  socket s = null;
  dataoutputstream dos = null;
  datainputstream dis = null;
  private boolean bconnected = false;
  textfield tftxt = new textfield();
  textarea tacontent = new textarea();
  thread trecv = new thread(new recvthread());
  public static void main(string[] args) {
    new chatclient().launchframe();
  }
  public void launchframe() {
    setlocation(400, 300);
    this.setsize(300, 300);
    add(tftxt, borderlayout.south);
    add(tacontent, borderlayout.north);
    pack();
    this.addwindowlistener(new windowadapter() {
      @override
      public void windowclosing(windowevent arg0) {
        disconnect();
        system.exit(0);
      }
    });
    tftxt.addactionlistener(new tflistener());
    setvisible(true);
    connect();
    trecv.start();
  }
  public void connect() {
    try {
      s = new socket("localhost", 8888);
      dos = new dataoutputstream(s.getoutputstream());
      dis = new datainputstream(s.getinputstream());
      system.out.println("connected!");
      bconnected = true;
    } catch (unknownhostexception e) {
      e.printstacktrace();
    } catch (ioexception e) {
      e.printstacktrace();
    }
  }
  public void disconnect() {
    try {
      dos.close();
      dis.close();
      s.close();
    } catch (ioexception e) {
      e.printstacktrace();
    }
    /*
     * try { bconnected = false; trecv.join(); } catch(interruptedexception
     * e) { e.printstacktrace(); } finally { try { dos.close(); dis.close();
     * s.close(); } catch (ioexception e) { e.printstacktrace(); } }
     */
  }
  private class tflistener implements actionlistener {
    public void actionperformed(actionevent e) {
      string str = tftxt.gettext().trim();
      // tacontent.settext(str);
      tftxt.settext("");
      try {
        // system.out.println(s);
        dos.writeutf(str);
        dos.flush();
        // dos.close();
      } catch (ioexception e1) {
        e1.printstacktrace();
      }
    }
  }
  private class recvthread implements runnable {
    public void run() {
      try {
        while (bconnected) {
          string str = dis.readutf();
          // system.out.println(str);
          tacontent.settext(tacontent.gettext() + str + '\n');
        }
      } catch (socketexception e) {
        system.out.println("退出了,bye!");
      } catch (eofexception e) {
        system.out.println("推出了,bye - bye!");
      } catch (ioexception e) {
        e.printstacktrace();
      }
    }
  }
}

socket服務端代碼

chatserver.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
package socketdemo;
import java.io.*;
import java.net.*;
import java.util.*;
public class chatserver {
  boolean started = false;
  serversocket ss = null;
  list<client> clients = new arraylist<client>();
  public static void main(string[] args) {
    new chatserver().start();
  }
  public void start() {
    try {
      ss = new serversocket(8888);
      started = true;
    } catch (bindexception e) {
      system.out.println("端口使用中....");
      system.out.println("請關掉相關程序并重新運行服務器!");
      system.exit(0);
    } catch (ioexception e) {
      e.printstacktrace();
    }
    try {
      while (started) {
        socket s = ss.accept();
        client c = new client(s);
        system.out.println("a client connected!");
        new thread(c).start();
        clients.add(c);
        // dis.close();
      }
    } catch (ioexception e) {
      e.printstacktrace();
    } finally {
      try {
        ss.close();
      } catch (ioexception e) {
        // todo auto-generated catch block
        e.printstacktrace();
      }
    }
  }
  class client implements runnable {
    private socket s;
    private datainputstream dis = null;
    private dataoutputstream dos = null;
    private boolean bconnected = false;
    public client(socket s) {
      this.s = s;
      try {
        dis = new datainputstream(s.getinputstream());
        dos = new dataoutputstream(s.getoutputstream());
        bconnected = true;
      } catch (ioexception e) {
        e.printstacktrace();
      }
    }
    public void send(string str) {
      try {
        dos.writeutf(str);
      } catch (ioexception e) {
        clients.remove(this);
        system.out.println("對方退出了!我從list里面去掉了!");
        // e.printstacktrace();
      }
    }
    public void run() {
      try {
        while (bconnected) {
          string str = dis.readutf();
          system.out.println(str);
          for (int i = 0; i < clients.size(); i++) {
            client c = clients.get(i);
            c.send(str);
            // system.out.println(" a string send !");
          }
          /*
           * for(iterator<client> it = clients.iterator();
           * it.hasnext(); ) { client c = it.next(); c.send(str); }
           */
          /*
           * iterator<client> it = clients.iterator();
           * while(it.hasnext()) { client c = it.next(); c.send(str);
           * }
           */
        }
      } catch (eofexception e) {
        system.out.println("client closed!");
      } catch (ioexception e) {
        e.printstacktrace();
      } finally {
        try {
          if (dis != null)
            dis.close();
          if (dos != null)
            dos.close();
          if (s != null) {
            s.close();
            // s = null;
          }
        } catch (ioexception e1) {
          e1.printstacktrace();
        }
      }
    }
  }
}

本機測試運行結果:

Java基于socket實現的客戶端和服務端通信功能完整實例

關閉客戶端窗口后,提示信息如下:

Java基于socket實現的客戶端和服務端通信功能完整實例

希望本文所述對大家java程序設計有所幫助。

原文鏈接:https://blog.csdn.net/nuli888/article/details/51884931

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 欧美一区永久视频免费观看 | 久久久久久中文字幕 | 黄色片视频在线播放 | 国产日韩一区 | 国产高清在线精品一区二区三区 | 日韩一二三区视频 | 视频二区 | 精品久久国产老人久久综合 | 成人免费黄色 | 一区二区三区国产 | 亚洲高清毛片一区二区 | 欧美永久精品 | 国产精品一区二区久久 | 欧美精品一二三 | 成人在线观看免费视频 | 中国精品自拍 | 91成人短视频在线观看 | 超碰美女 | 亚洲色图二区 | 久久丁香 | 在线观看黄免费 | 成人av在线电影 | 亚洲毛片一区二区 | 欧美婷婷| 国产99久久 | 亚洲一区视频 | 国产伦精品一区二区三区精品视频 | 国产51人人成人人人人爽色哟哟 | 在线一区二区三区 | 日日摸夜夜 | 一区二区三区视频 | 中文字幕在线观看一区二区三区 | www.av在线| 无码日韩精品一区二区免费 | 精品日韩| 欧美天堂| 91精品国产91久久久久久最新 | 午夜免费av| 精品国产91乱码一区二区三区 | 超碰在线91 | 国产精品视频在线播放 |