溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于TCP和多線程的聊天框架代碼是什么

發(fā)布時間:2021-10-14 10:16:03 來源:億速云 閱讀:124 作者:柒染 欄目:編程語言

本篇文章給大家分享的是有關基于TCP和多線程的聊天框架代碼是什么,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么/**//****************************************************
基于TCP和多線程的聊天框架代碼是什么
基于TCP和多線程的聊天框架代碼是什么【服務端】基于TCP,多線程的聊天框架代碼
基于TCP和多線程的聊天框架代碼是什么評注:非常完整
基于TCP和多線程的聊天框架代碼是什么******************************************************/

基于TCP和多線程的聊天框架代碼是什么#include "stdafx.h"
基于TCP和多線程的聊天框架代碼是什么#include <stdio.h>
基于TCP和多線程的聊天框架代碼是什么#include <winsock2.h>
基于TCP和多線程的聊天框架代碼是什么#pragma comment(lib,"ws2_32.lib")
基于TCP和多線程的聊天框架代碼是什么
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么/**//*****************定義客戶端連接上后的聊天線程函數(shù)************/
基于TCP和多線程的聊天框架代碼是什么
基于TCP和多線程的聊天框架代碼是什么DWORD WINAPI ClientThread(LPVOID lpParam)
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么    SOCKET  sock = (SOCKET)lpParam;//定義連接客戶端的套接字
基于TCP和多線程的聊天框架代碼是什么    char  szBuff[2048];//定義接收緩沖區(qū)
基于TCP和多線程的聊天框架代碼是什么    char  szMessage[2048];//定義發(fā)送的消息
基于TCP和多線程的聊天框架代碼是什么    int  ret,
基于TCP和多線程的聊天框架代碼是什么        nLeft,
基于TCP和多線程的聊天框架代碼是什么        idx;//nLeft,idx用以控制寫緩沖的數(shù)據,以保證數(shù)據寫入正確
基于TCP和多線程的聊天框架代碼是什么    //提示輸入exit退出聊天
基于TCP和多線程的聊天框架代碼是什么    puts("輸入\"exit\"可退出聊天\n");
基于TCP和多線程的聊天框架代碼是什么    //進入數(shù)據傳輸循環(huán),即聊天
基于TCP和多線程的聊天框架代碼是什么    //缺陷是只能一人一句來回對話
基于TCP和多線程的聊天框架代碼是什么    while(1)
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么    基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么        
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么        /**////////////////////////// 接收  /////////////////
基于TCP和多線程的聊天框架代碼是什么        ret = recv(sock,szBuff,2048,0);
基于TCP和多線程的聊天框架代碼是什么        if(ret == 0) 
基于TCP和多線程的聊天框架代碼是什么            break;
基于TCP和多線程的聊天框架代碼是什么        else if(ret == SOCKET_ERROR)
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么        基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么            printf("recv() failed:%d\n",WSAGetLastError());
基于TCP和多線程的聊天框架代碼是什么            break;
基于TCP和多線程的聊天框架代碼是什么        }

基于TCP和多線程的聊天框架代碼是什么        
基于TCP和多線程的聊天框架代碼是什么        szBuff[ret] = '\0';
基于TCP和多線程的聊天框架代碼是什么        //判斷對方發(fā)過來的是否為exit退出命令,若是則退出聊天繼續(xù)監(jiān)聽
基于TCP和多線程的聊天框架代碼是什么        if(!strcmp(szBuff,"exit")) 
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么        基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么            printf("對方已經停止聊天!\n");
基于TCP和多線程的聊天框架代碼是什么            printf("服務器正在監(jiān)聽基于TCP和多線程的聊天框架代碼是什么");
基于TCP和多線程的聊天框架代碼是什么            break;
基于TCP和多線程的聊天框架代碼是什么        }

基于TCP和多線程的聊天框架代碼是什么        printf("客戶:%s\n",szBuff);//在控制臺打印客戶的聊天語句
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么        /**/////////////////////////// 回復  //////////////////
基于TCP和多線程的聊天框架代碼是什么        printf("發(fā)送消息:"); 
基于TCP和多線程的聊天框架代碼是什么        //服務器輸入數(shù)據回答客戶
基于TCP和多線程的聊天框架代碼是什么        gets(szMessage);
基于TCP和多線程的聊天框架代碼是什么        //若發(fā)送為空,則傳送‘不說話’三字,并提示
基于TCP和多線程的聊天框架代碼是什么        if(strlen(szMessage)==0)
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么        基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么            printf("發(fā)送不能為空哦\n");
基于TCP和多線程的聊天框架代碼是什么            strcpy(szMessage,"不說話!");
基于TCP和多線程的聊天框架代碼是什么        }

基于TCP和多線程的聊天框架代碼是什么        //傳送數(shù)據
基于TCP和多線程的聊天框架代碼是什么        nLeft = strlen(szMessage);
基于TCP和多線程的聊天框架代碼是什么        idx = 0;
基于TCP和多線程的聊天框架代碼是什么        //確保寫進所有數(shù)據
基于TCP和多線程的聊天框架代碼是什么        while(nLeft>0)
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么        基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么            ret = send(sock,&szMessage[idx],nLeft,0);
基于TCP和多線程的聊天框架代碼是什么            if(ret == 0)
基于TCP和多線程的聊天框架代碼是什么                break;
基于TCP和多線程的聊天框架代碼是什么            else if(ret == SOCKET_ERROR)
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么            基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么                printf("send error!%d\n",WSAGetLastError());
基于TCP和多線程的聊天框架代碼是什么                break;
基于TCP和多線程的聊天框架代碼是什么            }

基于TCP和多線程的聊天框架代碼是什么            nLeft-=ret;
基于TCP和多線程的聊天框架代碼是什么            idx +=ret;
基于TCP和多線程的聊天框架代碼是什么        }

基于TCP和多線程的聊天框架代碼是什么        //判斷szMessage是否為exit命令,若是則退出聊天繼續(xù)監(jiān)聽
基于TCP和多線程的聊天框架代碼是什么        if(!strcmp(szMessage,"exit")) 
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么        基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么            printf("連接正在斷開!\n");
基于TCP和多線程的聊天框架代碼是什么            printf("服務器繼續(xù)監(jiān)聽基于TCP和多線程的聊天框架代碼是什么\n");
基于TCP和多線程的聊天框架代碼是什么            break;
基于TCP和多線程的聊天框架代碼是什么        }

基于TCP和多線程的聊天框架代碼是什么    }

基于TCP和多線程的聊天框架代碼是什么    return 0;
基于TCP和多線程的聊天框架代碼是什么}

基于TCP和多線程的聊天框架代碼是什么
基于TCP和多線程的聊天框架代碼是什么//主函數(shù)
基于TCP和多線程的聊天框架代碼是什么int main(int argc, char* argv[])
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么    WSADATA  wsd;//定義WINSOCK32消息結構體
基于TCP和多線程的聊天框架代碼是什么    SOCKET  sServSock;//服務器端的套接字
基于TCP和多線程的聊天框架代碼是什么    SOCKET  sConns;//服務器的各連接
基于TCP和多線程的聊天框架代碼是什么    HANDLE  hThread;//定義處理客戶連接的縣城
基于TCP和多線程的聊天框架代碼是什么    DWORD  dwThreadId;//定義線程ID
基于TCP和多線程的聊天框架代碼是什么    char  szAddress[128];//監(jiān)聽的地址
基于TCP和多線程的聊天框架代碼是什么    struct hostent *host = NULL;//定義本地地址指針
基于TCP和多線程的聊天框架代碼是什么    sockaddr_in local,
基于TCP和多線程的聊天框架代碼是什么        client;//分別定義本地,客戶端的地址結構
基于TCP和多線程的聊天框架代碼是什么    int nSockErr;//定義出錯信息
基于TCP和多線程的聊天框架代碼是什么    printf("請你輸入監(jiān)聽地址(格式如202.204.118.138):");
基于TCP和多線程的聊天框架代碼是什么    gets(szAddress);
基于TCP和多線程的聊天框架代碼是什么    int nAddrLen = sizeof(client);//得到地址結構長度
基于TCP和多線程的聊天框架代碼是什么    
基于TCP和多線程的聊天框架代碼是什么    
基于TCP和多線程的聊天框架代碼是什么    //初始化Winsock32庫
基于TCP和多線程的聊天框架代碼是什么    if(WSAStartup(MAKEWORD(2,2),&wsd) != 0)
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么    基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么        printf("failed to load winsock!\n");
基于TCP和多線程的聊天框架代碼是什么        return 1;
基于TCP和多線程的聊天框架代碼是什么    }

基于TCP和多線程的聊天框架代碼是什么    //建立socket對象
基于TCP和多線程的聊天框架代碼是什么    sServSock = socket(AF_INET,SOCK_STREAM,IPPROTO_IP);//流套接字,面向連接
基于TCP和多線程的聊天框架代碼是什么    
基于TCP和多線程的聊天框架代碼是什么    //為socket分配端口地址監(jiān)聽
基于TCP和多線程的聊天框架代碼是什么    local.sin_family = AF_INET;
基于TCP和多線程的聊天框架代碼是什么    local.sin_port = htons(5150);//監(jiān)聽端口
基于TCP和多線程的聊天框架代碼是什么    
基于TCP和多線程的聊天框架代碼是什么    //若地址出錯則監(jiān)聽本機地址
基于TCP和多線程的聊天框架代碼是什么    if((local.sin_addr.s_addr = inet_addr(szAddress))
基于TCP和多線程的聊天框架代碼是什么        ==INADDR_NONE)
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么    基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么        puts("所輸入的地址不正確,本服務將使用本機地址!");
基于TCP和多線程的聊天框架代碼是什么        //得到主機名
基于TCP和多線程的聊天框架代碼是什么        if(gethostname(szAddress,sizeof(szAddress))==SOCKET_ERROR)//得到本機的域名,名稱
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么        基于TCP和多線程的聊天框架代碼是什么{   
基于TCP和多線程的聊天框架代碼是什么            puts("Can't getting local host name.");
基于TCP和多線程的聊天框架代碼是什么            
基于TCP和多線程的聊天框架代碼是什么        }

基于TCP和多線程的聊天框架代碼是什么        //通過主機名得到主機IP地址
基于TCP和多線程的聊天框架代碼是什么        host = gethostbyname(szAddress);//得到本地ip
基于TCP和多線程的聊天框架代碼是什么        if(host)
基于TCP和多線程的聊天框架代碼是什么            CopyMemory(&local.sin_addr,host->h_addr_list[0],
基于TCP和多線程的聊天框架代碼是什么            host->h_length);
基于TCP和多線程的聊天框架代碼是什么        else
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么        基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么            printf("gethostbyname() failed:%d\n",WSAGetLastError());
基于TCP和多線程的聊天框架代碼是什么            Sleep(5000);
基于TCP和多線程的聊天框架代碼是什么            return 1;
基于TCP和多線程的聊天框架代碼是什么        }

基于TCP和多線程的聊天框架代碼是什么    }

基于TCP和多線程的聊天框架代碼是什么    
基于TCP和多線程的聊天框架代碼是什么    //將套接字綁定到本機地址local上
基于TCP和多線程的聊天框架代碼是什么    if(bind(sServSock,(LPSOCKADDR)&local,sizeof(local))==SOCKET_ERROR)
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么    基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么        nSockErr = WSAGetLastError();
基于TCP和多線程的聊天框架代碼是什么        printf("bind error:%d!\n", nSockErr);
基于TCP和多線程的聊天框架代碼是什么        return 1;
基于TCP和多線程的聊天框架代碼是什么    }

基于TCP和多線程的聊天框架代碼是什么    //監(jiān)聽客戶連接請求
基于TCP和多線程的聊天框架代碼是什么    if(listen(sServSock,5)==SOCKET_ERROR)
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么    基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么        nSockErr =WSAGetLastError();
基于TCP和多線程的聊天框架代碼是什么        printf("listen error:%d\n", nSockErr);
基于TCP和多線程的聊天框架代碼是什么        return 1;
基于TCP和多線程的聊天框架代碼是什么    }

基于TCP和多線程的聊天框架代碼是什么    //提示狀態(tài)
基于TCP和多線程的聊天框架代碼是什么    printf("服務器啟動成功!\n");
基于TCP和多線程的聊天框架代碼是什么    printf("服務器正在監(jiān)聽基于TCP和多線程的聊天框架代碼是什么\n");
基于TCP和多線程的聊天框架代碼是什么    //進入處理連接循環(huán)
基于TCP和多線程的聊天框架代碼是什么    while(1)
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么    基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么        //若有客戶連接,則接受連接
基于TCP和多線程的聊天框架代碼是什么        sConns = accept(sServSock,(struct sockaddr *)&client,&nAddrLen);
基于TCP和多線程的聊天框架代碼是什么        if(sConns == INVALID_SOCKET)
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么        基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么            nSockErr = WSAGetLastError();
基于TCP和多線程的聊天框架代碼是什么            printf("accept error %d\n",nSockErr);
基于TCP和多線程的聊天框架代碼是什么            break;
基于TCP和多線程的聊天框架代碼是什么        }

基于TCP和多線程的聊天框架代碼是什么        //連接正確則提示可以開始聊天
基于TCP和多線程的聊天框架代碼是什么        printf("%s:%d連接到了本服務,現(xiàn)在可以聊天了.\n",inet_ntoa(client.sin_addr),ntohs(client.sin_port));
基于TCP和多線程的聊天框架代碼是什么        //創(chuàng)建一個線程用于聊天
基于TCP和多線程的聊天框架代碼是什么        hThread = CreateThread(NULL,0,ClientThread,    (LPVOID)sConns,0,&dwThreadId);
基于TCP和多線程的聊天框架代碼是什么        if(hThread == NULL)
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么        基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么            printf("CreateThread() failed %d\n",GetLastError());
基于TCP和多線程的聊天框架代碼是什么            break;
基于TCP和多線程的聊天框架代碼是什么        }

基于TCP和多線程的聊天框架代碼是什么        //聊天結束關閉聊天線程,繼續(xù)監(jiān)聽
基于TCP和多線程的聊天框架代碼是什么        CloseHandle(hThread);
基于TCP和多線程的聊天框架代碼是什么    }

基于TCP和多線程的聊天框架代碼是什么    closesocket(sServSock);
基于TCP和多線程的聊天框架代碼是什么    WSACleanup();
基于TCP和多線程的聊天框架代碼是什么    return 0;
基于TCP和多線程的聊天框架代碼是什么}

基于TCP和多線程的聊天框架代碼是什么
基于TCP和多線程的聊天框架代碼是什么
基于TCP和多線程的聊天框架代碼是什么
基于TCP和多線程的聊天框架代碼是什么
基于TCP和多線程的聊天框架代碼是什么
基于TCP和多線程的聊天框架代碼是什么

基于TCP和多線程的聊天框架代碼是什么
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么/**//***********************************************************
基于TCP和多線程的聊天框架代碼是什么客戶端
基于TCP和多線程的聊天框架代碼是什么************************************************************/

基于TCP和多線程的聊天框架代碼是什么#include "stdafx.h"
基于TCP和多線程的聊天框架代碼是什么#include <stdio.h>
基于TCP和多線程的聊天框架代碼是什么#include <winsock2.h>
基于TCP和多線程的聊天框架代碼是什么#pragma comment(lib,"ws2_32.lib")
基于TCP和多線程的聊天框架代碼是什么int main(int argc,char **argv)
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么    WSADATA  wsd;//定義winsock32信息結構
基于TCP和多線程的聊天框架代碼是什么    SOCKET  sClient;//定義本地套接字
基于TCP和多線程的聊天框架代碼是什么    char  szBuffer[2048];//定義接受的緩沖
基于TCP和多線程的聊天框架代碼是什么    char  szMessage[2048];//發(fā)送的消息
基于TCP和多線程的聊天框架代碼是什么    char  szServer[128];//連接的服務器地址,IP地址
基于TCP和多線程的聊天框架代碼是什么    int   ret;
基于TCP和多線程的聊天框架代碼是什么    
基于TCP和多線程的聊天框架代碼是什么    struct  sockaddr_in server;//定義連接的服務器地址
基于TCP和多線程的聊天框架代碼是什么    struct  hostent    *host =NULL;//定義地址
基于TCP和多線程的聊天框架代碼是什么    
基于TCP和多線程的聊天框架代碼是什么    //提示輸入連接的服務器地址
基于TCP和多線程的聊天框架代碼是什么    printf("請輸入連接的服務器IP地址(如:202.204.118.138):");
基于TCP和多線程的聊天框架代碼是什么    gets(szServer);
基于TCP和多線程的聊天框架代碼是什么    //初始winsock庫
基于TCP和多線程的聊天框架代碼是什么    if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么    基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么        printf("Failed to load Winsock library!\n");Sleep(5000);
基于TCP和多線程的聊天框架代碼是什么        return 1;
基于TCP和多線程的聊天框架代碼是什么    }

基于TCP和多線程的聊天框架代碼是什么    
基于TCP和多線程的聊天框架代碼是什么    // strcpy(szMessage,"我是***");
基于TCP和多線程的聊天框架代碼是什么    
基于TCP和多線程的聊天框架代碼是什么    
基于TCP和多線程的聊天框架代碼是什么    //建立socket對象
基于TCP和多線程的聊天框架代碼是什么    sClient =  socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
基于TCP和多線程的聊天框架代碼是什么    if(sClient == INVALID_SOCKET)
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么    基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么        printf("socket() failed :%d\n",WSAGetLastError());Sleep(5000);
基于TCP和多線程的聊天框架代碼是什么        return 1;
基于TCP和多線程的聊天框架代碼是什么    }

基于TCP和多線程的聊天框架代碼是什么    
基于TCP和多線程的聊天框架代碼是什么    //定義服務器地址以發(fā)送信息
基于TCP和多線程的聊天框架代碼是什么    server.sin_family = AF_INET;
基于TCP和多線程的聊天框架代碼是什么    server.sin_port = htons(5150);//端口
基于TCP和多線程的聊天框架代碼是什么    
基于TCP和多線程的聊天框架代碼是什么    server.sin_addr.s_addr = inet_addr(szServer);
基于TCP和多線程的聊天框架代碼是什么    
基于TCP和多線程的聊天框架代碼是什么    //若沒有地址,則將地址設置為本機地址
基于TCP和多線程的聊天框架代碼是什么    if(server.sin_addr.s_addr == INADDR_NONE)
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么    基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么        puts("所輸入服務器地址不正確,本將使用本機地址!");
基于TCP和多線程的聊天框架代碼是什么        //得到主機名
基于TCP和多線程的聊天框架代碼是什么        if(gethostname(szServer,sizeof(szServer))==SOCKET_ERROR)//得到本機的域名,名稱
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么        基于TCP和多線程的聊天框架代碼是什么{   
基于TCP和多線程的聊天框架代碼是什么            puts("Can't getting local host name.");
基于TCP和多線程的聊天框架代碼是什么            
基于TCP和多線程的聊天框架代碼是什么        }

基于TCP和多線程的聊天框架代碼是什么        //通過主機名得到IP
基于TCP和多線程的聊天框架代碼是什么        host = gethostbyname(szServer);
基于TCP和多線程的聊天框架代碼是什么        if(host == NULL)
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么        基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么            printf("Unable to resolve server:%s\n",szServer);Sleep(5000);
基于TCP和多線程的聊天框架代碼是什么            return 1;
基于TCP和多線程的聊天框架代碼是什么        }

基于TCP和多線程的聊天框架代碼是什么        CopyMemory(&server.sin_addr,host->h_addr_list[0],host->h_length);
基于TCP和多線程的聊天框架代碼是什么    }

基于TCP和多線程的聊天框架代碼是什么    //建立連接
基于TCP和多線程的聊天框架代碼是什么    if(connect(sClient,(struct sockaddr *)&server,sizeof(server))==SOCKET_ERROR)
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么    基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么        printf("connect() failed:%d\n",WSAGetLastError());
基于TCP和多線程的聊天框架代碼是什么        Sleep(5000);
基于TCP和多線程的聊天框架代碼是什么        return 1;
基于TCP和多線程的聊天框架代碼是什么    }

基于TCP和多線程的聊天框架代碼是什么    //提示當前狀態(tài)
基于TCP和多線程的聊天框架代碼是什么    puts("連接成功,現(xiàn)在可以聊天了!\n");
基于TCP和多線程的聊天框架代碼是什么    puts("輸入\"exit\"可退出聊天\n");
基于TCP和多線程的聊天框架代碼是什么    
基于TCP和多線程的聊天框架代碼是什么    
基于TCP和多線程的聊天框架代碼是什么    //進入聊天狀態(tài)
基于TCP和多線程的聊天框架代碼是什么    while(1)
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么    基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么        /**/////////發(fā)送
基于TCP和多線程的聊天框架代碼是什么        printf("發(fā)送消息:");
基于TCP和多線程的聊天框架代碼是什么        //寫入發(fā)送信息
基于TCP和多線程的聊天框架代碼是什么        gets(szMessage);
基于TCP和多線程的聊天框架代碼是什么        if(strlen(szMessage)==0)
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么        基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么            printf("發(fā)送不能為空哦\n");
基于TCP和多線程的聊天框架代碼是什么            strcpy(szMessage,"不說話!");
基于TCP和多線程的聊天框架代碼是什么        }

基于TCP和多線程的聊天框架代碼是什么        //發(fā)送信息
基于TCP和多線程的聊天框架代碼是什么        ret = send(sClient,szMessage,strlen(szMessage),0);
基于TCP和多線程的聊天框架代碼是什么        if(ret == 0)
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么        基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么        }

基于TCP和多線程的聊天框架代碼是什么        else if(ret == SOCKET_ERROR)
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么        基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么            printf("send() failed: %d\n",WSAGetLastError());
基于TCP和多線程的聊天框架代碼是什么            Sleep(5000);
基于TCP和多線程的聊天框架代碼是什么        }

基于TCP和多線程的聊天框架代碼是什么        //判斷輸入信息是否為exit命令,若是則退出
基于TCP和多線程的聊天框架代碼是什么        if(!strcmp(szMessage,"exit"))
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么        基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么            printf("你已經退出了聊天!");
基于TCP和多線程的聊天框架代碼是什么            break;
基于TCP和多線程的聊天框架代碼是什么        }

基于TCP和多線程的聊天框架代碼是什么        // printf("send %d byte\n",ret);
基于TCP和多線程的聊天框架代碼是什么        
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么        /**//////接收回復的信息
基于TCP和多線程的聊天框架代碼是什么        ret = recv(sClient,szBuffer,2048,0);
基于TCP和多線程的聊天框架代碼是什么        if(ret == 0) 
基于TCP和多線程的聊天框架代碼是什么            ;
基于TCP和多線程的聊天框架代碼是什么        else if(ret == SOCKET_ERROR)
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么        基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么            printf("recv()failed:%d\n",WSAGetLastError());
基于TCP和多線程的聊天框架代碼是什么            
基于TCP和多線程的聊天框架代碼是什么        }

基于TCP和多線程的聊天框架代碼是什么        
基于TCP和多線程的聊天框架代碼是什么        //設置接收得到的字符串,并打印
基于TCP和多線程的聊天框架代碼是什么        szBuffer[ret] = '\0';
基于TCP和多線程的聊天框架代碼是什么        if(!strcmp(szBuffer,"exit"))
基于TCP和多線程的聊天框架代碼是什么基于TCP和多線程的聊天框架代碼是什么        基于TCP和多線程的聊天框架代碼是什么{
基于TCP和多線程的聊天框架代碼是什么            printf("服務器已經停止聊天!");
基于TCP和多線程的聊天框架代碼是什么            break;
基于TCP和多線程的聊天框架代碼是什么        }

基于TCP和多線程的聊天框架代碼是什么        printf("服務器:%s\n",szBuffer);
基于TCP和多線程的聊天框架代碼是什么    }
 
基于TCP和多線程的聊天框架代碼是什么    
基于TCP和多線程的聊天框架代碼是什么    //關閉套接字
基于TCP和多線程的聊天框架代碼是什么    closesocket(sClient);
基于TCP和多線程的聊天框架代碼是什么    //清空winsock環(huán)境
基于TCP和多線程的聊天框架代碼是什么    WSACleanup();
基于TCP和多線程的聊天框架代碼是什么    return 0;
基于TCP和多線程的聊天框架代碼是什么    
基于TCP和多線程的聊天框架代碼是什么}

基于TCP和多線程的聊天框架代碼是什么

以上就是基于TCP和多線程的聊天框架代碼是什么,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

tcp
AI