激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

服務器之家 - 編程語言 - Java教程 - Java網絡編程之TCP通信完整代碼示例

Java網絡編程之TCP通信完整代碼示例

2021-03-02 10:42溫布利往事 Java教程

這篇文章主要介紹了Java網絡編程之TCP通信完整代碼示例,具有一定借鑒價值,需要的朋友可以了解下。

一、概述

  socket類是java執行客戶端tcp操作的基礎類,這個類本身使用代碼通過主機操作系統的本地tcp棧進行通信。socket類的方法會建立和銷毀連接,設置各種socket選項。

  serversocket類是java執行服務器端操作的基礎類,該類運行于服務器,監聽入站tcp連接,每個socket服務器監聽服務器的某個端口,當遠程主機的客戶端嘗試連接此端口時,服務器就被喚醒,并返回一個表示兩臺主機之間socket的正常socket對象。

二、什么是tcp?  

  tcp是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。tcp通信分為客戶端和服務器端,對應的對象是分別是socket和serversocket。

  當一臺計算機需要與另一臺遠程計算機連接時,tcp協議會讓他們建立一個連接:用于發送和接收數據的虛擬鏈路。tcp協議負責收集信息包,并將其按適當的次序放好傳送,在接收端收到后再將其正確的還原。為了保證數據包在傳送中準確無誤,tcp使用了重發機制:當一個通信實體發送一個消息給另一個通信實體后需要收到另一個實體的確認信息,如果沒有收到確認信息,則會再次重發剛才發送的信息。

Java網絡編程之TCP通信完整代碼示例

三、tcp通信

  1、構造函數

  socket類實現客戶端套接字,通過構造函數可以指定希望連接的主機和端口。主機可以指定為inetaddress或string,端口始終指定為0到65535之間的int值。

?
1
socket s=new socket("127.0.0.1", 10001);//創建一個流套接字并將其連接到指定主機上的指定端口號

serversocket類實現服務器套接字。服務器套接字等待請求通過網絡傳入,它基于該請求執行某些操作,然后向請求者返回結果。

?
1
serversocket ss=new serversocket(10001);//創建綁定到特定端口的服務器套接字

2、例子:tcp文件復制

  客戶端:

?
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
public class clientdemo
{
    public static void main(string[] args) throws unknownhostexception, ioexception
      {
        socket s=new socket("127.0.0.1", 10004);
        bufferedreader buf = new bufferedreader(new filereader("c:\\users\\administrator\\desktop\\1.txt"));
        string line=null;
        /*printwriter out=new printwriter(s.getoutputstream(),true);
    while((line=buf.readline())!=null)
    {
      out.println(line);
    }
    */
        bufferedwriter out=new bufferedwriter(new outputstreamwriter(s.getoutputstream()));
        while((line=buf.readline())!=null)
            {
            out.write(line);
            out.newline();
            out.flush();
        }
        s.shutdownoutput();
        bufferedreader in=new bufferedreader(new inputstreamreader(s.getinputstream()));
        string str=in.readline();
        system.out.println(str);
        s.close();
        buf.close();
    }
}

服務器端:

?
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
public class serverdemo
{
    public static void main(string[] args) throws ioexception
      {
        serversocket ss=new serversocket(10004);
        socket s=ss.accept();
        bufferedreader in=new bufferedreader(new inputstreamreader(s.getinputstream()));
        string line=null;
        /*printwriter buf=new printwriter(new filewriter("c:\\users\\administrator\\desktop\\2.txt"),true);
    while((line=in.readline())!=null)
    
      buf.println(line);
    }*/
        bufferedwriter buf=new bufferedwriter(new filewriter("c:\\users\\administrator\\desktop\\2.txt"));
        while((line=in.readline())!=null)
            {
            buf.write(line);
            buf.newline();
            buf.flush();
        }
        printwriter out=new printwriter(s.getoutputstream(),true);
        out.println("傳輸成功!");
        ss.close();
        buf.close();
    }
}

四、socket在瀏覽上的應用

  我們可以在eclipse中編寫服務器端,然后利用瀏覽器進行訪問。

  eg、服務器端代碼為:

?
1
2
3
4
5
6
7
8
9
10
11
public class socketserver
{
  public static void main(string[] args) throws ioexception
  {
    serversocket server=new serversocket(11000);
    socket client=server.accept();
    printwriter out=new printwriter(client.getoutputstream(),true);
    out.println("你好!");
    server.close();
  }
}

然后打開ie瀏覽器,在地址中輸入http://192.168.1.120:11000/(192.168.1.120為本機ip地址),結果顯示為

Java網絡編程之TCP通信完整代碼示例

在正常的應用中,瀏覽器是向tomacat服務器發出請求,以得到網頁圖片等資源。而tomca就是用java寫的服務器端軟件。

  現在我們編寫服務器端為:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class socketserver
{
  public static void main(string[] args) throws ioexception
  {
    serversocket server=new serversocket(11000);
    socket client=server.accept();
    printwriter out=new printwriter(client.getoutputstream(),true);
    bufferedreader in=new bufferedreader(new inputstreamreader(client.getinputstream()));
    string line=null;
    while((line=in.readline())!=null)
      system.out.println(line);
    out.println("你好!");
    server.close();
  }
}

然后在利用瀏覽器訪問,可以看到瀏覽器(客戶端)發給服務器端的請求頭數據為:

Java網絡編程之TCP通信完整代碼示例

利用上述原理,我們可以自己編寫類似ie的瀏覽器端(客戶端)軟件。首先在tomcat的安裝目錄c:\apache-tomcat-7.0.62\webapps\myweb中添加一個demo.html資源,然后編寫客戶端,代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class clientdemo
{
    public static void main(string[] args) throws unknownhostexception, ioexception
      {
        socket s=new socket("192.168.1.120",8080);
        printwriter out=new printwriter(s.getoutputstream(),true);
        //將請求頭發給服務器
        out.println("get /myweb/demo.html http/1.1");
        out.println("accept:*/*");
        out.println("host: 192.168.1.120:11000");
        out.println("connection: keep-alive");
        //輸出空行,此步驟不可少
        out.println();
        bufferedreader in=new bufferedreader(new inputstreamreader(s.getinputstream()));
        string line=null;
        //返回服務器的響應文件
        while((line=in.readline())!=null)
            {
            system.out.println(line);
        }
        s.close();
    }
}

接下來,啟動tomcat。即雙擊c:\apache-tomcat-7.0.62\bin中startup.bat文件。然后運行上述客戶端代碼,此時可以看到tomacat返回的響應數據:

Java網絡編程之TCP通信完整代碼示例

總結

以上就是本文關于java網絡編程之tcp通信完整代碼示例的全部內容,希望對大家有所幫助。如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

原文鏈接:https://www.cnblogs.com/xujian2014/p/4660570.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 性 毛片 | 自拍偷拍亚洲图片 | chinese 军人 gay xx 呻吟 | 免费看国产 | 久久成人免费网 | 中文字幕在线播放一区 | 免费看黄色三级毛片 | 国产亚洲精品久久久久久久软件 | 国产亚洲高清视频 | 在线观看国产一区二区 | 免费在线观看毛片 | 嫩嫩的freehdxxx| 中文字幕爱爱视频 | 久久第四色 | 久久国产成人午夜av浪潮 | 爽毛片| 久久亚洲国产精品 | 亚洲婷婷日日综合婷婷噜噜噜 | 久久噜噜噜精品国产亚洲综合 | 日本xxxx色视频在线观看免费, | 久久在线精品视频 | 91香焦视频 | 国产精品伦视频看免费三 | 成人在线视频免费播放 | 日本人乱人乱亲乱色视频观看 | 成人免费在线视频播放 | 99精品视频99| 中文字幕偷拍 | 亚洲国产二区 | 久久久久久三区 | 国产一级一级片 | 久草高清视频 | 欧美一级片在线 | 伦理三区 | 999精品国产| 成人在线精品视频 | 国产色视频在线观看免费 | 久草高清视频 | 精品国产一区二区三区蜜殿 | av成人在线电影 | 色人阁在线视频 |