C 實現聊天小程式

2022-09-28 20:15:16 字數 2544 閱讀 3132

c++寫乙個遊戲聊天伺服器,供大家參考,具體內容如下

最近學習網路程式設計寫了個聊天小程式,寫個部落格記錄下自己的**

c++網路程式設計

c++多執行緒

c++ stl

以乙個結構體的形式儲存客戶端,用vector訪問存在的客戶端,開啟多執行緒處理邏輯

伺服器允許登陸多個客戶端,允許公屏聊天也允許私聊,預設情況下屬於公屏聊天,若想私聊,格式為「@使用者名稱+要傳送的訊息」;執行效果如下圖:

#include "stdafx.h"

#include

#include "windows.h" //一定要包含該標頭檔案

#include "process.h"

#include

#include

#include

using namespace std;

#pragma comment(lib, "ws2_32.lib") //顯示載入 ws2_32.dll ws2_32.dll就是最新socket版本

int g_curplayernum = 0; //當前連線數

const char*g_playername = //假定的聊天者名字

;struct playerinfo //利用結構儲存連線的客戶端

;vectorg_clientsocklist; //利用vector訪問已連線的客戶端

voidwww.cppcns.com process(void*param)

; //接收緩衝區

int bytes;

if ((bytes = recv(g_clientsocklist[index].sock, buf, sizeof(buf), 0)) == socket_error)

//伺服器**(含邏輯處理)

if (buf[0] == '@')

break;}}

} else

//群聊

cout << g_clientsocklist[index].name << "對" << "所有人說:" << buf << endl; }}

int main()

//建立伺服器套接字

socket seversocket;

if ((seversocket = socket(af_inet, sock_stream, 0)) == socket_error)

struct sockaddr_in severaddress; //乙個繫結位址:有ip位址,有埠號,有協議族

memset(&severaddress, 0, sizeof(sockaddr_in)); //初始化結構體

severaddress.sin_family = af_inet;

severaddress.sin_addr.s_un.s_addr = htonl(inaddr_any);//填入本機ip位址

severaddress.sin_port = htons(60000);//設定埠號

//繫結套接字 指定繫結的ip位址和埠號

if (bind(seversocket, (sockaddr*)&severaddress, sizeof(sezxxhmuooqxveraddress)) == socket_error)

; //接收緩衝區

if (recv(clientsocket, recvbuf, 2048, 0) == socket_error)

else

; int len = strlen(recvbuf); //訊息長度

copy(&recvbuf[1], &recvbuf[5], sendplayername); //分離出名字

msg = msg.substr(5, len - 5);

cout << sendplayername << "對你說:" << msg

= htons(60001);//設定埠號

//繫結套接字 指定繫結的ip位址和埠號

if (bind(clientsocket, (sockaddr*)&clientaddress, sizeof(clientaddress)) == socket_error)

struct sockaddr_in severaddress; //伺服器位址 也就是即將要連線的目標位址

mezxxhmuooqxmset(&severaddress, 0, sizeof(sockaddr_in));

severaddress.sin_family = af_inet;

severaddress.sin_addr.s_un.s_addr = inet_addr("127.0.0.1"); 表示本機ip位址

severaddress.sin_port = htons(60000);//設定埠號

//開始連線

if (connect(clientsocket, (sockaddr*)&severaddress, sizeof(severaddress)) == socket_error)

{ cout << "客戶端:和伺服器連線失敗!"<

本文標題: c++實現聊天小程式

本文位址:

Python實現聊天小程式

import socket import sys host port 10001 server socket socket.socket socket.af inet,socket.sock stream server socket.setsockopt socket.sol socket,sock...

UDP協議實現聊天小程式

今天我們用之前講解過的udp協議來寫乙個最基礎,最簡單的網路聊天程式。我們通過udp協議來實現乙個簡單的網路聊天程式 這是客戶端的實現 過程 1.建立套接字 2.繫結位址資訊 3.向服務端傳送資料 4.接受服務端傳送的資料 5.關閉socket include include include inc...

小程式實現簡單語音聊天

基於ws外掛程式 引入ws外掛程式 var websocketserver require ws server 例項化websocket var wss new websocketserver 初始化客戶端陣列 var clients 建立鏈結監聽 wss.on connection functio...