網路聊天 客戶端(Winsock程式設計)

2021-07-10 22:10:41 字數 2305 閱讀 4836

// 網路聊天_客戶端.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include

#include

#include

#pragma comment(lib,"ws2_32.lib")

using

namespace

std;

//接收伺服器發來的資料的程序

void recvproc(socket socketser)

; while (true)

else

}}int _tmain(int argc, _tchar* argv)

wsadata,* lpwsadata;

返回值:若函式成功呼叫則返回0,否則返回錯誤資訊.

*/if (wsastartup(makeword(2, 2), &wsadata) != 0)

if (hibyte(wsadata.wversion != 2) || lobyte(wsadata.wversion) != 2)//檢查啟動的winsock版本與之前設定的winsock版本是否一致

/*呼叫socket函式的目的:建立乙個套接字

該函式的函式原型:socket socket(int af,int type,int protocol);

type:用於指定套接字型別,若取值為sock_stream表示要建立的套接字為流套接字,而取值為sock_dgram則表示要建立資料報套接字

protocol:用於指定網路協議型別,一般取值為0,表示為tcp/ip協議

返回值:若建立成功則返回所建立的套接字控制代碼socket,否則將產生invalid_socket錯誤

*/socket socketcli = socket(af_inet, sock_stream, 0);//建立客戶端流套接字

if (invalid_socket == socketcli)//建立不成功

/*協議下的位址,可以通過強制型別轉換把sockaddr_in結構轉換成為sockaddr結構

struct sockaddr;

struct sockaddr_in;

*/sockaddr_in addrser;//伺服器位址(協議、埠號、ip位址)

char ip[64];

int port;

cout

<< "請輸入ip位址\n";

cin >> ip;//輸入的是點式ip

cout

<< "請輸入埠號\n";

cin >> port;//主機位元組順序的埠號

addrser.sin_addr.s_un.s_addr = inet_addr(ip);

addrser.sin_family = af_inet;

addrser.sin_port = htons(port);

char sendbuf[100];//傳送緩衝區

char recvbuf[100];//接受緩衝區

zeromemory(recvbuf, 100);//zeromemory是美國微軟公司的軟體開發包sdk中的乙個巨集。 其作用是用0來填充一塊記憶體區域。

zeromemory(sendbuf, 100);

/*呼叫connect函式的目的:客戶端向伺服器發出連線請求,建立乙個端到端的連線。

該函式的函式原型:int connect(socket s,const struct sockaddr far *name,int namelen);

s:表示乙個未連線的資料報或流套接字的描述字(客戶端程序自身建立的套接字)

name:針對tcp/ip的套接字位址結構,標識服務程序的ip位址和埠號資訊(far表示是遠指標)

namelen:標識name引數的長度

返回值:若函式成功呼叫則返回0,

若將要連線的計算機沒有監聽指定埠的這一程序則返回錯誤資訊wsaeconrefuseed,

若連線超時則返回wsaetimeout資訊.

*/if (connect(socketcli, (sockaddr*)&addrser, sizeof(sockaddr)) != 0)//客戶端向伺服器發出連線請求

createthread(null, 0, (lpthread_start_routine)recvproc, (void*)socketcli, 0, null);//建立接收程序

while (true)

closesocket(socketcli);

wsacleanup();

system("pause");

return

0;}

WinSock多人聊天客戶端

使用winsock 使用codeblocks編譯 只要需要執行兩個客戶端,客戶端傳送訊息給服務端,服務端收到訊息後 給其他客戶端 參考 include include include include include conio.h include include include include de...

聊天室客戶端

from socket import import os,sys 傳送訊息 def send msg s,name,addr while true text input 發言 if text quit msg q name s.sendto msg.encode addr sys.exit 退出聊天...

聊天小專案之多客戶端聊天

需求分析 能支援對個使用者同時聊天,實現群聊功能 方法分析 採用多執行緒處理方式。不同的客戶端開啟不同的工作執行緒,共享同一程序的記憶體資訊。服務端 某一客戶端傳送的資訊給其他客戶端,實現資訊實時共享。服務端 server.c include include include include incl...