基於TCP的socket程式設計

2021-04-13 05:04:37 字數 2016 閱讀 4475

sockets

(套接字)程式設計有三種,流式套接字(

sock_stream

),資料報套接字(

sock_dgram

),原始套接字(

sock_raw

);基於

tcp的

socket

程式設計是採用的流式套接字。

在這個程式中,將兩個工程新增到乙個工作區。要鏈結乙個

ws2_32.lib

的庫檔案。

伺服器端程式設計的步驟: 1

:載入套接字型檔,建立套接字

(wsastartup()/socket());

2:繫結套接字到乙個

ip位址和乙個埠上

(bind());

3:將套接字設定為監聽模式等待連線請求

(listen());

4:請求到來後,接受連線請求,返回乙個新的對應於此次連線的套接字

(accept());

5:用返回的套接字和客戶端進行通訊

(send()/recv());

6:返回,等待另一連線請求; 7

:關閉套接字,關閉載入的套接字型檔

(closesocket()/wsacleanup())。

伺服器端**如下:

#include

#include

void main()

if ( lobyte( wsadata.wversion ) != 1 ||

hibyte( wsadata.wversion ) != 1 )

socket socksrv=socket(af_inet,sock_stream,0);

sockaddr_in addrsrv;

addrsrv.sin_addr.s_un.s_addr=htonl(inaddr_any);

addrsrv.sin_family=af_inet;

addrsrv.sin_port=htons(6000);

bind(socksrv,(sockaddr*)&addrsrv,sizeof(sockaddr));

listen(socksrv,5);

sockaddr_in addrclient;

int len=sizeof(sockaddr);

while(1) }

客戶端程式設計的步驟: 1

:載入套接字型檔,建立套接字

(wsastartup()/socket());

2:向伺服器發出連線請求

(connect());

3:和伺服器端進行通訊

(send()/recv());

4:關閉套接字,關閉載入的套接字型檔

(closesocket()/wsacleanup())。

客戶端的**如下:

#include

#include

void main()

if ( lobyte( wsadata.wversion ) != 1 ||

hibyte( wsadata.wversion ) != 1 )

socket sockclient=socket(af_inet,sock_stream,0);

sockaddr_in addrsrv;

addrsrv.sin_addr.s_un.s_addr=inet_addr("127.0.0.1");

addrsrv.sin_family=af_inet;

addrsrv.sin_port=htons(6000);

connect(sockclient,(sockaddr*)&addrsrv,sizeof(sockaddr));

char recvbuf[50];

recv(sockclient,recvbuf,50,0);

printf("%s/n",recvbuf);

send(sockclient,"hello",strlen("hello")+1,0);

closesocket(sockclient);

wsacleanup();}

基於TCP的socket程式設計

基於tcp的socket程式設計的伺服器程式流程如下 1 建立套接字 socket 2 將套接字繫結到乙個本地位址和埠上 bind 3 將套接字設為監聽模式,準備接收客戶請求 listen 4 等待客戶請求到來,當請求到來後,接受連線請求,返回乙個新的對應於此次連線的套接字 accept 5 用返回...

基於TCP的socket程式設計

tcp客戶用connect函式來建立tcp伺服器的連線 bind函式把乙個本地位址賦予乙個套接字 listen函式 listen函式僅由tcp伺服器呼叫,它做兩件事 當socket函式建立乙個套接字時,它被假設為乙個主動套接字,listen函式把乙個未連線的套接字轉換成乙個被動套接字。本函式第二個引...

程式設計實現基於tcp的socket程式設計

server端 public class server socket.shutdowninput 關閉輸入流 4 獲取輸出流,響應客戶端的請求 outputstream os socket.getoutputstream printwriter pw new printwriter os 包裝為列印...