當前位置:首頁 » 編程軟體 » csocket編程視頻

csocket編程視頻

發布時間: 2023-07-23 08:11:05

java中的socket編程是作什麼的

Socket,又稱為套接字,Socket是計算機網路派枝通信的基本的技術之一。如今大多數基於網路的軟體,如瀏覽器,即時通訊工具甚至是P2P下載都是基於Socket實現的。本文仿羨慧會介紹一下基於TCP/IP的Socket編程,並且如何寫一個客戶端/伺服器程序。
方法/步驟

Java中的socket編程 下面的部分將通過一些示例講解一下如何使用socket編寫客戶端和伺服器端的程序。 注意:在接下來的示例中,我將使用基於TCP/IP協議的socket編程,因為這個協議遠遠比UDP/IP使用的要廣泛。並且所有的socket相關的類都位於java.net包備答下,所以在我們進行socket編程時需要引入這個包。

寫入數據 接下來就是寫入請求數據,我們從客戶端的socket對象中得到OutputStream對象,然後寫入數據後。很類似文件IO的處理代碼。

打開伺服器端的socket

讀取數據 通過上面得到的socket對象獲取InputStream對象,然後安裝文件IO一樣讀取數據即可。這里我們將內容列印出來。

使用socket實現一個回聲伺服器,就是伺服器會將客戶端發送過來的數據傳回給客戶端。

② CSocket之UDP編程

#include <stdio.h>
#include <Winsock2.h>
#pragma comment(lib,"ws2_32.lib")

void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 1, 1);

err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return;
}

if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 )
{
WSACleanup( );
return;
}

SOCKET sersocket=socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN seraddr;
seraddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
seraddr.sin_family=AF_INET;
seraddr.sin_port=htons(5000);

bind(sersocket,(SOCKADDR*)&seraddr,sizeof(SOCKADDR));

SOCKADDR clientaddr;
int len=sizeof(SOCKADDR);

char revbuf[100];
char sendbuf[100];

recvfrom(sersocket,revbuf,100,0,(SOCKADDR*)&clientaddr,&len);
printf("%s\n",revbuf);
scanf("%s",&sendbuf);
sendto(sersocket,sendbuf,strlen(sendbuf)+1,0,(SOCKADDR*)&clientaddr,len);

closesocket(sersocket);
WSACleanup();
}

#include <stdio.h>
#include <Winsock2.h>
#pragma comment(lib,"ws2_32.lib")

void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 1, 1);

err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return;
}

if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 )
{
WSACleanup( );
return;
}

SOCKET sockclient=socket(AF_INET,SOCK_DGRAM,0);

SOCKADDR_IN clientaddr;
clientaddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
clientaddr.sin_family=AF_INET;
clientaddr.sin_port=htons(5000);

int len=sizeof(SOCKADDR);

char revbuf[100];
char sendbuf[100];
printf("請輸入內容:\n");
while(1)
{

scanf("%s",&sendbuf);
sendto(sockclient,sendbuf,strlen(sendbuf)+1,0,(SOCKADDR*)&clientaddr,len);
recvfrom(sockclient,revbuf,100,0,(SOCKADDR*)&clientaddr,&len);
printf("%s\n",revbuf);

}
closesocket(sockclient);
WSACleanup();
}

大同小異,CSocket只是進行了封裝而已,原理是一樣的,編程要思路靈活才行。

③ C# SOCKET網路編程

1. 把 lisThd.ApartmentState = ApartmentState.STA; 注釋掉,ApartmentState 已過時。2. 如果使用TCP協議,建議你使用 TcpListener 類和 TcpClient 類,更加方便。以下是一個示例以下示例說明如何設置 TcpClient 以連接到 TCP 埠 13 上的時間伺服器。
using System;
using System.Net.Sockets;
using System.Text;public class TcpTimeClient {
private const int portNum = 13;
private const string hostName = "host.contoso.com"; public static int Main(String[] args) {
try {
TcpClient client = new TcpClient(hostName, portNum); NetworkStream ns = client.GetStream();

byte[] bytes = new byte[1024];
int bytesRead = ns.Read(bytes, 0, bytes.Length); Console.WriteLine(Encoding.ASCII.GetString(bytes,0,bytesRead)); client.Close(); } catch (Exception e) {
Console.WriteLine(e.ToString());
} return 0;
}
}
TcpListener 用於監視 TCP 埠上的傳入請求,然後創建一個 Socket 或 TcpClient 來管理與客戶端的連接。Start 方法啟用偵聽,而 Stop 方法禁用埠上的偵聽。AcceptTcpClient 方法接受傳入的連接請求並創建 TcpClient 以處理請求,AcceptSocket 方法接受傳入的連接請求並創建 Socket 以處理請求。以下示例說明如何使用 TcpListener 創建網路時間伺服器以監視 TCP 埠 13。當接受傳入的連接請求時,時間伺服器用來自宿主伺服器的當前日期和時間進行響應。using System;
using System.Net.Sockets;
using System.Text;public class TcpTimeServer { private const int portNum = 13; public static int Main(String[] args) {
bool done = false;

TcpListener listener = new TcpListener(portNum); listener.Start(); while (!done) {
Console.Write("Waiting for connection...");
TcpClient client = listener.AcceptTcpClient();

Console.WriteLine("Connection accepted.");
NetworkStream ns = client.GetStream(); byte[] byteTime = Encoding.ASCII.GetBytes(DateTime.Now.ToString()); try {
ns.Write(byteTime, 0, byteTime.Length);
ns.Close();
client.Close();
} catch (Exception e) {
Console.WriteLine(e.ToString());
}
} listener.Stop(); return 0;
}

}

④ c++csocket編程 5種模式

1. 構造CSocket對象,如以下的形式:

CSocket Serversocket;

2. 利用CSocket對象的Create()函數創建Windows Socket,Create()函數會調用Bind()函數將此Socket綁定到指定的地址上,其原型為:

BOOL Create (UINT nSocketPort = 0, int nSocketType = SOCK_STREAM, LPCTSTR lpszSocketAddress = NULL);

其中nSocketPort參數指定通信連接的埠號,埠號可以任意指定,但最好不要使用系統默認的一些埠號,例如21是FTP文件傳輸使用的埠號;

3. Socket創建完畢之後,在伺服器端進行監聽客戶的連接請求,使用如下的代碼:

ServerSocket.Listen();

緊接著對於客戶端而言,將會調用Connect()函數向伺服器發送連接請求,而對於伺服器而言,則會調用Accept()函數對客戶端發送過來的請求連接進行接受和處理,Accept()函數可以創建一個和監聽Socket相同的連接Socket來處理客戶的請求,二原來的Socket仍然處於監聽狀態,使用的形式如下。

客戶端:

ClientSocket.Connect(伺服器的地址,伺服器的埠號);

伺服器端:

CSocket ReceiveSocket;

ServerSocket.Accept(連接Socket,客戶的地址結構,客戶地址結構的長度)

4. 對於數據流伺服器類型而言,伺服器和客戶各自通過調用函數來完成數據的發送和接受,使用如下的語句:

ServerReceive.Receive(緩沖區,緩沖區的長度,接受標志位);

Client.Send(緩沖區,緩沖區的長度,發送標志位);

5. 在客戶端與伺服器端的數據傳輸完成之後,調用下述語句,釋放Socket所佔有的資源。

ServerSocket.Close();

ReceiveSocket.Close();

ClientSocket.Close();

⑤ 在windows下用C語言如何實現socket網路編程,需要用到哪些頭文件或者庫

需要用到的頭文件包含:

#include <winsock2.h>

#include <windows.h>

與Linux環境下socket編程相比,windows環境多了一個步驟:啟動或者初始化winsock庫

Winsock,一種標准API,一種網路編程介面,用於兩個或多個應用程序(或進程)之間通過網路進行數據通信。具有兩個版本:

Winsock 1:

Windows CE平台支持。

頭文件:WinSock.h

庫:wsock32.lib

Winsock 2:

部分平台如Windows CE貌似不支持。通過前綴WSA可以區別於Winsock 1版本。個別函數如WSAStartup、WSACleanup、WSARecvEx、WSAGetLastError都屬於Winsock 1.1規范的函數;

頭文件:WinSock2.h

庫:ws2_32.lib

mswsock.h用於編程擴展,使用時必須鏈接mswsock.dll

(5)csocket編程視頻擴展閱讀

winsock庫的載入與卸載:

載入:int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);

載入成功,返回值為0。

WORD wVersionRequested:載入的winsock版本,使用宏MAKEWORD(x, y),x表示高位元組,y表示低位元組。然而使用時MAKEWORD(2, 2)。高位元組與低位元組相同~~

LPWSADATA lpWSAData:WSADATA結構的指針,傳入參數後,系統幫助我們填充版本信息。有興趣的可以看看結構體內容,不過基本用不著。

卸載:int WSACleanup(void);比起載入,卸載的函數真是輕松愉快。

⑥ 怎樣用C語言做socket網路編程

mfc只是對socket進行了一些封裝,大部分人做網路編程都是用的原始的socket,比如如下介面都可以在c下進行調用x0dx0a 1.socket() x0dx0a 2.bind() x0dx0a 3.connect() x0dx0a 4.listen() x0dx0a 5.accept() x0dx0a 6.send() 和recv() x0dx0a 7.sendto() 和recvfrom() x0dx0a 8.close() 和shutdown() x0dx0a 9.getpeername() x0dx0a 10.gethostname() x0dx0a這些介面是在Winsock2.h中定義的不是在mfc中定義的,你只需要包含Winsock2.h頭文件和Ws2_32.lib庫就可以了。

熱點內容
win10系統如何鎖屏密碼 發布:2025-04-06 04:57:41 瀏覽:147
證明上傳 發布:2025-04-06 04:57:40 瀏覽:666
選廣告演算法 發布:2025-04-06 04:56:14 瀏覽:712
sql鞋子 發布:2025-04-06 04:46:28 瀏覽:747
資料庫ip和伺服器ip是同一個 發布:2025-04-06 04:44:07 瀏覽:565
編譯程序對應高級語言 發布:2025-04-06 04:42:38 瀏覽:350
牛刀雲編程 發布:2025-04-06 04:17:48 瀏覽:11
數控編程g73 發布:2025-04-06 04:09:39 瀏覽:258
關系型資料庫的結構 發布:2025-04-06 04:00:22 瀏覽:359
太原編程培訓 發布:2025-04-06 03:57:18 瀏覽:915