1. 程式人生 > >Socket網路程式設計—簡單聊天軟體--1、什麼是Socket及通訊軟體設計思路

Socket網路程式設計—簡單聊天軟體--1、什麼是Socket及通訊軟體設計思路

.Net平臺Socket網路程式設計:Socket又稱"套接字",應用程式通常通過"套接字"向網路發出請求或者應答網路請求。

Socket就像現實生活中的電話,人與人之間可以通過電話與對方通訊,那麼應用程式就通過Socket來進行通訊。我們要通過電話聯絡上對方必須得滿足三個要求:1,雙方都有電話;2,要聯絡的一方必須知道對方的電話號碼;3,雙方都必須連線上總伺服器;同樣的,兩個應用程式之間要實現通訊也必須滿足3個類似要求:1,雙方都要有用於通訊的Socket2,要請求通訊的應用程式必須知道對方應用程式的IP地址及埠號;3,雙方應用程式必須都連線上伺服器。

下面圖片是Socket的伺服器/客戶端的應用模式:


伺服器至少要有兩個Socket,一個監聽Socket,其餘的為通訊Socket,監聽的Socket只是用來監聽客戶端發來的要求接入請求,一旦接收到客戶端發來的接入請求就建立一個相應的通訊Socket用於跟該接入的客戶端進行通訊。

客戶端至少需要一個Socket作為通訊Socket,用於與伺服器進行通訊。

這裡舉一個通俗易懂的例子來理解通訊Socket與監聽Socket。假設在一個大學裡有一棟女生宿舍,將這棟宿舍看做一個伺服器,裡面的宿管阿姨就相當於監聽Socket,宿舍里居住的女生就是通訊Socket。這時候外面一個男生(客戶端的通訊Socket)要求宿舍中某個女生下來聊天,這個時候負責監聽的

Socket宿管阿姨就接收到了你的要求,就去把你要聊天的女生叫出來跟你聊天。宿管阿姨只負責叫人,不負責跟你聊天,女生只負責跟你聊天,不會去替你叫其他女生。

========================================================

理解了什麼是Socket後,我在這裡利用Socket的伺服器/客戶端的應用模式寫一個簡單的通訊軟體。下面是設計思路:


==================================================================歡迎轉載,轉載請註明出處==========================================

相關推薦

Socket網路程式設計簡單聊天軟體--1什麼是Socket通訊軟體設計思路

.Net平臺Socket網路程式設計:Socket又稱"套接字",應用程式通常通過"套接字"向網路發出請求或者應答網路請求。 Socket就像現實生活中的電話,人與人之間可以通過電話與對方通訊,那麼應用程式就通過Socket來進行通訊。我們要通過電話聯絡上對方必須得滿足三個

網路程式設計——簡單聊天

#include <stdio.h> #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> #include <arpa/inet.h> #include

利用Python進行socket網路程式設計,實現樹莓派與Ubuntu(16.04)之間的簡單網路聊天

標題 目標: 採用socket程式設計,完成兩個樹莓派之間、或者樹莓派與Ubuntu系統之間的網路文字通訊(或聊天) 分析: 首先我們需要了解socket程式設計的原理以及它是怎麼實現的。 Socket的英文原義是“孔”或“插座”。作為BSD UNIX的程序通訊機制,取後一種意思。

Unity Socket網路程式設計(TCP) 簡單例子-1

開發工具:Visual Studio、Unity 開發語言:C# 【伺服器端】 在VS建立一個C#空專案 程式碼如下: using System; using Syste

銀行業務系統(c/s架構socket網路程式設計多執行緒)

1、功能要求 包括兩類使用者:管理人員和普通使用者(本文只寫了普通使用者程式) 普通使用者功能:登入登出、存取款、轉賬、查詢餘額 2、技術要求 要求用到多程序多執行緒 要求同時允許多個使用者操作(因為沒有註冊賬號功能,且只初始化了兩個賬號資訊,所以同時只能允許兩個賬號線上)

(二)網路程式設計聊天室(1

概述:通過網路程式設計來實現聊天室功能 第一步:建立服務端與客戶端並建立連線         服務端:         import java.io.IOException;     &n

網路程式設計 - 簡單socket例子

1、客戶端 #客戶端import socketclient=socket.socket() #生成socket連線物件client.connect(("localhost",6969))client.send(b"hello world")data = client.recv(1024)print ("re

網路程式設計,三要素(IP埠號協議),Socket,UDP,TCP

1.網路程式設計概述(瞭解) A:計算機網路 是指將地理位置不同的具有獨立功能的多臺計算機及其外部裝置,通過通訊線路連線起來,在網路作業系統,網路管理軟體及網路通訊協議的管理和協調下,實現資源

Java Socket網路程式設計:實現簡單的區域網共享檔案(PeertoPeer)

介紹 程式碼很簡單,只需要兩個java檔案:Server.java和Client.java。 程式碼不是我寫的,出自:這裡(感興趣的可以自行下載,這裡就不貼出來了) 執行結果 簡要說一下怎麼執行,這裡演示在同一個電腦上執行(也可以在多個電腦上執行,但客戶端的ip要改為伺服器端所在

Socket網路程式設計(二)UDP協議實現聊天工具

package UDP_chat; import java.awt.BorderLayout; import java.awt.Frame; import java.awt.List; import java.awt.Panel; import java.awt.TextField; import jav

Socket網路程式設計1) ———— 基於TCP協議的客戶-伺服器socket例項

Socket網路程式設計(1) ———— 基於TCP協議的客戶-伺服器socket例項 1、TCP網路程式設計架構 2、程式碼段 伺服器: #include <stdio.h> #include <stdlib.h&

網路程式設計(十)——WebSocket 和socketHTTP的區別和聯絡

一、WebSocket 是什麼? WebSocket是HTML5規範提出的一種協議;目前除了完犢子的IE瀏覽器,其他瀏覽器都基本支援。他是一種協議,萬變不離其宗,也是基於TCP協議的;和HTTP協議是並存的兩種協議。 WebSocket是HTML5中的協議。HTML5 Web

1socket+threading編程之TCP

switch resp [data]) sent 什麽 由於 ... Coding 一個 1、Server-TCP #coding:utf8 ‘‘‘ 我是在Mac下寫的代碼,不知道為什麽在Windows上中文顯示亂碼,朋友建議我更改dos窗口編碼,我建議朋友放棄Win

java:socket 網路程式設計

socket的通俗解釋: 套接字=主機+埠號。兩個東西配在一起,叫做“配套”。 另外“套”也有對應的意思,它可以把網路上的兩個應用對應起來,所以用“套”。 它是用來與另一個應用連線的,所以用“接”。 又因為它是一小段資料,很小一小段,所以叫“字”。 “套接字",就是一小段用來將網路個兩個應用

[Socket網路程式設計]一個封鎖操作被對 WSACancelBlockingCall 的呼叫中斷。

原文地址:http://www.cnblogs.com/xiwang/archive/2012/10/25/2740114.html記錄在此,方便查閱。 C#中在使用UDPClient迴圈監聽埠,在斷開UPDClient的時候,使用try...catch捕獲了異常,System.NET.Socket

簡單遠端遙控程式【網路程式設計 - 簡單遠端遙控程式,C實現】

實驗內容 基於Windows下Winsocket程式設計 實現 1.list (顯示伺服器端當前路徑下所有檔案) 2.get 遠端檔案路徑 本地檔案路徑 (下載遠端檔案 到 本地檔案路徑 ) 3.port 本地檔案路徑 遠端檔案路徑 (上傳 本地檔案 到 本地檔案路徑下 ) 4.quit (退出程式) 參

Python_day6:socket網路程式設計

一、socket   socket即套接字,用於描述IP地址和埠,是一個通訊鏈的控制代碼,應用程式通常通過"套接字"向網路發出請求或者應答網路請求。   最簡單的socket,一次 1 import socket 2 server = socket.socket() #獲得例項

網路程式設計基礎【day09】:socket接收大資料(五)

本節內容 1、概述 2、socket接收大資料 3、中文字元的坑 一、概述   上篇部落格寫到了,就是說當伺服器傳送至客戶端的資料,大於客戶端設定的資料,則就會把資料服務端發過來的資料剩餘資料存在IO緩衝區中,那我們如何解決這個問題呢?   有的同學就說了: 改大客戶端接收的資料的大小=&

網路程式設計基礎【day09】:socket解決粘包問題之MD5(八)

本節內容 1、概述 2、程式碼實現 一、概述   上一篇部落格講到的用MD5來校驗還是用的之前解決粘包的方法,就是客戶端傳送一個請求,等待服務端的確認的這樣的一個笨方法。下面我們用另外一種方法:就是客戶端已經知道可接收多少資料了,既然客戶端已經知道接收多少資料了,那麼客戶端在接收資料的時候,正好接收已

python------Socket網路程式設計(二)粘包問題

一.socket網路程式設計  粘包:服務端兩次傳送指令在一起,它會把兩次傳送內容合在一起傳送,稱為粘包,從而出現錯誤。 解決方法:(比較low的方法) 有些需要實時更新的,用sleep有延遲,不能這樣解決問題。 解決方法之高階方法: 客戶端: 二.傳送檔案 ftp s