1. 程式人生 > >Socket通訊之客戶端和伺服器對話

Socket通訊之客戶端和伺服器對話

科技改變時代……

這裡寫圖片描述

1/Socket

1,什麼是Socket

網路上的兩個程式通過一個雙向的通訊連線實現資料的交換,這個雙向鏈路的一端稱為一個Socket。Socket通常用來實現客戶方和服務方的連線。Socket是TCP/IP協議的一個十分流行的程式設計介面,一個Socket由一個IP地址和一個埠號唯一確定。

但是,Socket所支援的協議種類也不光TCP/IP一種,因此兩者之間是沒有必然聯絡的。在Java環境下,Socket程式設計主要是指基於TCP/IP協議的網路程式設計。

2,Socket通訊的過程

Server端Listen(監聽)某個埠是否有連線請求,Client端向Server 端發出Connect(連線)請求,Server端向Client端發回Accept(接受)訊息。一個連線就建立起來了。Server端和Client 端都可以通過Send,Write等方法與對方通訊。

對於一個功能齊全的Socket,都要包含以下基本結構,其工作過程包含以下四個基本的步驟:

  (1) 建立Socket;

  (2) 開啟連線到Socket的輸入/出流;

  (3) 按照一定的協議對Socket進行讀/寫操作;

  (4) 關閉Socket.(在實際應用中,並未使用到顯示的close,雖然很多文章都推薦如此,不過在我的程式中,可能因為程式本身比較簡單,要求不高,所以並未造成什麼影響。)

2/檔案複製

//檔案複製
        File f=new File("d://11.txt");
        File fcopy=new File("d://22.txt");
        if
(!fcopy.exists()){//如果不存在 try { fcopy.createNewFile();//建立一個新檔案22.text } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } try { FileInputStream fis = new FileInputStream(f); FileOutputStream fos = new
FileOutputStream(fcopy); byte[] array = new byte[1024];//每次讀1024個位元組 int i = fis.read(array); while(i != -1){ fos.write(array, 0, i);//從array陣列中第一個元素開始讀,讀到第i個。 i = fis.read(array); } fos.flush(); fos.close(); fis.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }

網路連線

實現客戶端於服務端的對話
這裡寫圖片描述

集合

這裡寫圖片描述
這裡寫圖片描述
HashMap
這裡寫圖片描述
排序,比較
這裡寫圖片描述
遍歷輸出:
1、

         list.add("藏獒           小貝");
         list.add("京巴           笨笨");
        Iterator<String> iter=list.iterator();
           while(iter.hasNext())
           {
               System.out.println(iter.next());
           }
        System.out.println(list.get(0));
        //輸出:藏獒           小貝
         //    京巴           笨笨

2、

 ArrayList<Student> list = new ArrayList<>();
         Student s = new Student("李四", "北京");
         list.add(new Student("張三", "上海"));
         list.add(new Student("王五", "青島"));
         list.add(new Student("馬六", "煙臺"));
         Collections.reverse(list);//反轉
         for (Student stu : list) {
    System.out.println(stu.getName()+stu.getHometown());
            }
    /*輸出:馬六 煙臺
           王五 青島
           張三 上海
           李四 北京*/

3、

        HashMap<String,Student> map = new HashMap<>();
        map.put("lisi", new Student("李四","北京"));
        map.put("wangwu", new Student("王五","濰坊"));
        map.put("maliu", new Student("馬六","青島"));
        System.out.println(map.size());
        Set<String> keys =map.keySet();
        Iterator<String> it = keys.iterator();
        while(it.hasNext()){
            String key = it.next();
            Student stu = map.get(key);
    System.out.println(stu.getName()+stu.getHometown());
            }
    /*      輸出:李四 北京
                 王五 濰坊
                 馬六 青島  */

相關推薦

Socket通訊客戶伺服器對話

科技改變時代…… 1/Socket 1,什麼是Socket 網路上的兩個程式通過一個雙向的通訊連線實現資料的交換,這個雙向鏈路的一端稱為一個Socket。Socket通常用來實現客戶方和服務方的連線。Socket是TCP/IP協議的一個十分流行的程

socket通訊客戶伺服器的簡單實現

什麼是socket? socket最開始的含義是一個地址和埠對(ip, port)。Socket又稱"套接字",應用程式通常通過"套接字"向網路發出請求或者應答網路請求。 socket地址API:它唯一的表示了使用tcp通訊的一端,也可以將其理解成socket地址。 socket

C# 利用Socket類實現客戶伺服器之間的通訊,可在本機之間實現資訊互動

利用Socket類實現了本機之間的客戶端與服務端的資訊互動。 伺服器: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using

Java Socket應用(五) 基於UDP的Socket通訊客戶

UDPClient.java package com.yijia; import java.io.IOException; import java.net.*; /** * 建立時間:2018/10/4 15:44 * 作者: * 郵箱:[email p

java與c語言之間的socket通訊—c客戶java伺服器

寫在前面的宣告:程式例子均執行在ubuntu(是一個以桌面應用為主的Linux作業系統)上。當然你也可以把java執行在其它系統上,這裡只是為了方便。 上一篇文章已經說明了關於socket的一些知識,but這是遠遠不夠的,我相信只要你感興趣,學習它並不是什麼難事。 好吧,我

Android簡單實現Socket通訊客戶連線伺服器後,伺服器客戶傳送文字資料

案例實現的是簡單的Socket通訊,當客戶端(Android客戶端)連線到指定伺服器以後,伺服器向客戶端傳送一句話文字資訊(你可以拓展其它的了) 先看一下服務端程式的實現吧 Server.java import java.io.IOException;

Linux下c語言實驗Websocket通訊客戶伺服器測試程式碼

Websocket是一種可雙向通訊的網路協議,其底層的資料收發是基於socket的,所以使用c語言來實現理論上是沒有問題的,主要難點在於協議中要求對個別資料進行加密處理,這些加密方法(庫)在java、c#等專門開發web的平臺中都是自帶的API(隨調隨到),而在用到c

socket bind在客戶伺服器使用的區別

1、client bind (1)bind埠 由程序選擇一個埠去連伺服器,(如果預設情況下,呼叫bind函式時,核心指定的埠是同一個,那麼呼叫多個呼叫了bind()的client程式,會出現埠被佔用的錯誤)注意這裡的埠是客戶端的埠。如果不分配,指定埠0,就表示交給核心去選擇

網路程式設計(InetAddress類、SocketServerSocket、實現客戶伺服器之間的雙向通訊

網路程式設計的底層是IO,通過IO將一臺計算機中的資料傳送到另一臺計算機中。傳送的時候,要知道接受方的地址,該地址即為IP地址。知道IP地址後即可進行傳送。A向B發訊息,訊息是發過去了,但是B要怎樣接受呢?因此定義了埠,B監聽了A所使用的埠。A發的訊息中含有埠號,當B接受到訊息時,知道了埠號

java socket客戶伺服器通訊

    所謂可以多客戶端,就是需要在伺服器端進行多執行緒程式設計,每一個客戶端對應一個執行緒。如果要實現時時通訊和話,無論是客戶端還是伺服器端都要至少兩個執行緒,主執行緒進行傳送資訊,子執行緒進行獲取資訊,這樣可以保證時時通訊.下面貼出我的程式碼:客戶端:package

linux網路程式設計socket實現簡單客戶服務通訊(基於TCP)

一、介紹基於TCP協議通過socket實現網路程式設計常用API 1、讀者如果不是很熟悉,可以先看我之前寫的幾篇部落格,有socket,地址結構的理解,更加方便讀者理解 地址分別是: 2、socket(TCP)程式設計API簡介 1)、socket int s

linux網路程式設計socket實現簡單客戶服務通訊(基於UDP)

1、sendto和recvfrom函式介紹 sendto(經socket傳送資料) 相關函式 send , sendmsg,recv , recvfrom , socket 表頭檔案 #include < sys/types.h >#includ

Socket 通訊原理(Android客戶伺服器以TCP&&UDP方式互通)

ZERO、前言 有關通訊原理內容是在網上或百科整理得到,程式碼部分為本人所寫,如果不當,還望指教。 一、Socket通訊簡介  Android與伺服器的通訊方式主要有兩種,一是Http通訊,一是Socket通訊。兩者的最大差異在於,http連線使用的是“請求—響應方式

java socket 客戶伺服器互相通訊(聊天)

客戶端: package com.lzx.socket; import java.io.BufferedReader; import java.io.IOException; import jav

socket 通訊寫出客戶伺服器通訊 , 要求客戶傳送資料後能夠回顯相同的資料

比較基礎的一個服務端客戶端互相通訊的程式/** * @author john socket 的伺服器端,接收到資料後列印到控制檯 的資料 * */ public class ServiceSocket_1 { public static void main(

linux網絡編程socket實現簡單客戶服務的通信(基於UDP)

服務端 msg ets lin fgets err n) stderr tcp 單客戶端和服務端的通信(基於UDP) 代碼 服務端代碼socket3.c #include<sys/types.h> #include<sys/socket.h>

Java Socket多個客戶伺服器通訊

client程式碼: package com.cqut.test4; import java.io.*; import java.net.Socket; import java.net.SocketException; import java.net.U

java使用UDP來進行客戶伺服器通訊的簡單例子

1:客戶端程式 package com.pb.udp; import java.io.IOException; import java.net.DatagramPacket; import java.net.InetAddress; import java.net.Unk

C語言 Socket入門示例1—— 單工通訊客戶伺服器傳送訊息)

        如果對Windows API不太熟悉、對TCP/IP通訊協議不太熟悉,或者對C語言本身不太熟悉的話,學習Socket會有點難受的。以前學習作業系統的時候,被API嚇怕了,很多莫名其妙的API有著多如牛毛的引數,令人費解。學習計算機網路的時候,又有那麼多的協議

建立資料庫並實現TCP通訊客戶登陸伺服器身份驗證服務程式設計

m_pRecordsetB->Open((_variant_t)flsql,dlg->m_pConnectionB.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);//開啟資料庫獲得符合條件