青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

   C++ 技術中心

   :: 首頁 :: 聯系 ::  :: 管理
  160 Posts :: 0 Stories :: 87 Comments :: 0 Trackbacks

公告

鄭重聲明:本BLOG所發表的原創文章,作者保留一切權利。必須經過作者本人同意后方可轉載,并注名作者(天空)和出處(CppBlog.com)。作者Email:coder@luckcoder.com

留言簿(27)

搜索

  •  

最新隨筆

最新評論

評論排行榜

1. 服務器端代碼:


#include 
"stdafx.h"

#include 
<WINSOCK2.H>
#include 
<stdio.h>

#define PORT    5150
#define MSGSIZE 1024

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

typedef 
enum
{
    RECV_POSTED
}
OPERATION_TYPE;

typedef 
struct
{
    WSAOVERLAPPED  overlap;
    WSABUF         Buffer;
    
char           szMessage[MSGSIZE];
    DWORD          NumberOfBytesRecvd;
    DWORD          Flags;
    OPERATION_TYPE OperationType;
}
PER_IO_OPERATION_DATA, *LPPER_IO_OPERATION_DATA;

DWORD WINAPI WorkerThread(LPVOID);

int main()
{
    WSADATA                 wsaData;
    SOCKET                  sListen, sClient;
    SOCKADDR_IN             local, client;
    DWORD                   i, dwThreadId;
    
int                     iaddrSize = sizeof(SOCKADDR_IN);
    HANDLE                  CompletionPort 
= INVALID_HANDLE_VALUE;
    SYSTEM_INFO             systeminfo;
    LPPER_IO_OPERATION_DATA lpPerIOData 
= NULL;

    
// Initialize Windows Socket library
    WSAStartup(0x0202&wsaData);

    
// Create completion port
    CompletionPort = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 00);

    
// Create worker thread
    GetSystemInfo(&systeminfo);
    
for (i = 0; i < systeminfo.dwNumberOfProcessors; i++)
    
{
        CreateThread(NULL, 
0, WorkerThread, CompletionPort, 0&dwThreadId);
    }


    
// Create listening socket
    sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

    
// Bind
    local.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
    local.sin_family 
= AF_INET;
    local.sin_port 
= htons(PORT);
    bind(sListen, (
struct sockaddr *)&local, sizeof(SOCKADDR_IN));

    
// Listen
    listen(sListen, 3);

    
while (TRUE)
    
{
        
// Accept a connection
        sClient = accept(sListen, (struct sockaddr *)&client, &iaddrSize);
        printf(
"Accepted client:%s:%d\n", inet_ntoa(client.sin_addr), ntohs(client.sin_port));

        
// Associate the newly arrived client socket with completion port
        CreateIoCompletionPort((HANDLE)sClient, CompletionPort, (DWORD)sClient, 0);

        
// Launch an asynchronous operation for new arrived connection
        lpPerIOData = (LPPER_IO_OPERATION_DATA)HeapAlloc(
            GetProcessHeap(),
            HEAP_ZERO_MEMORY,
            
sizeof(PER_IO_OPERATION_DATA));
        lpPerIOData
->Buffer.len = MSGSIZE;
        lpPerIOData
->Buffer.buf = lpPerIOData->szMessage;
        lpPerIOData
->OperationType = RECV_POSTED;
        WSARecv(sClient,
            
&lpPerIOData->Buffer,
            
1,
            
&lpPerIOData->NumberOfBytesRecvd,
            
&lpPerIOData->Flags,
            
&lpPerIOData->overlap,
            NULL);
    }


    PostQueuedCompletionStatus(CompletionPort, 
0xFFFFFFFF0, NULL);
    CloseHandle(CompletionPort);
    closesocket(sListen);
    WSACleanup();
    
return 0;
}


DWORD WINAPI WorkerThread(LPVOID CompletionPortID)
{
    HANDLE                  CompletionPort
=(HANDLE)CompletionPortID;
    DWORD                   dwBytesTransferred;
    SOCKET                  sClient;
    LPPER_IO_OPERATION_DATA lpPerIOData 
= NULL;

    
while (TRUE)
    
{
        GetQueuedCompletionStatus(
            CompletionPort,
            
&dwBytesTransferred,
            (PULONG_PTR)
&sClient,
            (LPOVERLAPPED 
*)&lpPerIOData,
            INFINITE);
        
if (dwBytesTransferred == 0xFFFFFFFF)
        
{
            
return 0;
        }


        
if (lpPerIOData->OperationType == RECV_POSTED)
        
{
            
if (dwBytesTransferred == 0)
            
{
                
// Connection was closed by client
                closesocket(sClient);
                HeapFree(GetProcessHeap(), 
0, lpPerIOData);        
            }

            
else
            
{
                lpPerIOData
->szMessage[dwBytesTransferred] = '\0';
                send(sClient, lpPerIOData
->szMessage, dwBytesTransferred, 0);

                
// Launch another asynchronous operation for sClient
                memset(lpPerIOData, 0sizeof(PER_IO_OPERATION_DATA));
                lpPerIOData
->Buffer.len = MSGSIZE;
                lpPerIOData
->Buffer.buf = lpPerIOData->szMessage;
                lpPerIOData
->OperationType = RECV_POSTED;
                WSARecv(sClient,
                    
&lpPerIOData->Buffer,
                    
1,
                    
&lpPerIOData->NumberOfBytesRecvd,
                    
&lpPerIOData->Flags,
                    
&lpPerIOData->overlap,
                    NULL);
            }

        }

    }

    
return 0;
}



2. 客戶端代碼片斷:
void CTestClientDlg::OnBnClickedOk()
{
    
// TODO: 在此添加控件通知處理程序代碼
    
//CDialogEx::OnOK();

    UpdateData(TRUE);

    
byte b1,b2,b3,b4;
    
char strIpAddress[20]={0};
    m_IpCtrl.GetAddress(b1,b2,b3,b4);
    sprintf(strIpAddress,
"%d.%d.%d.%d",b1,b2,b3,b4);
    
    TCHAR buffer[
1024];
    sprintf(buffer,_T(
"%d"),m_port);

    SOCKET sockClient
=socket(AF_INET,SOCK_STREAM,0);
    SOCKADDR_IN addrSrv;
    addrSrv.sin_addr.S_un.S_addr
=inet_addr(strIpAddress);
    addrSrv.sin_family
=AF_INET;
    addrSrv.sin_port
=htons((UINT)m_port);

    
//向服務器發出連接請求
    connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));


    
char recvBuf[100];
    
//接收數據

    send(sockClient,
"This is lisi",strlen("This is lisi")+1,0);

    recv(sockClient,recvBuf,
100,0);
    printf(
"%s\n",recvBuf);

    
//關閉套接字
    closesocket(sockClient);
}
    
posted on 2011-03-01 11:45 C++技術中心 閱讀(2944) 評論(2)  編輯 收藏 引用 所屬分類: Windows 網絡編程

Feedback

# re: 完成端口示例 2011-03-01 22:56 liquanhai
想問問樓主的程序是怎么試的,我弄了一下沒有成功,想請教一下?
  回復  更多評論
  

# re: 完成端口示例 2011-03-02 09:01 C++技術中心
@liquanhai
復制到VC里就行了.已經在VC2010中編譯通過,復制到blog上來的.
客戶端是代碼片段,需要自已調整一下代碼.  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美福利精品| 国产精品一区二区女厕厕| 久久免费少妇高潮久久精品99| 影音先锋一区| 久久se精品一区精品二区| 欧美电影在线| 欧美激情亚洲自拍| 国产精品www| 亚洲视频一区在线观看| 亚洲一区三区电影在线观看| 老司机免费视频一区二区三区| 欧美a级大片| 欧美日韩综合| 欧美大片在线观看| 亚洲黄色免费网站| 亚洲国产另类久久久精品极度| 欧美成人性生活| 亚洲一区二区高清| 亚洲国产高清在线| 性刺激综合网| 伊人久久成人| 欧美色偷偷大香| 欧美国产精品人人做人人爱| 久久国产高清| 国产欧美综合在线| 欧美成人午夜免费视在线看片| 美女黄毛**国产精品啪啪| 欧美自拍偷拍| 亚洲欧美日韩精品久久亚洲区 | 亚洲欧美在线另类| 国产亚洲欧美一区| 欧美日韩在线三区| 夜夜爽www精品| 国产精品成人一区| 欧美午夜精品一区二区三区| 国产自产精品| 99国产精品久久久久久久成人热| 经典三级久久| 亚洲女女女同性video| 欧美亚洲视频| 欧美电影在线观看完整版| 亚洲精品一区二区网址| 亚洲午夜久久久久久久久电影院 | 久久久久久久性| 夜夜爽夜夜爽精品视频| 欧美在现视频| 亚洲在线观看视频网站| 久久精品国产一区二区三| 欧美二区视频| 99在线|亚洲一区二区| 亚洲精品国久久99热| 久久国产天堂福利天堂| 欧美福利视频一区| 午夜精品在线看| 欧美日韩国产成人在线| 国产精品一二| 在线天堂一区av电影| 亚洲激情图片小说视频| 亚洲综合第一页| 国产精品视频午夜| 亚洲一区二区三区视频| 欧美激情视频一区二区三区在线播放| 久久久久久久久伊人| 国产综合色一区二区三区| 久久中文在线| 欧美成人资源| 亚洲精品一区二区三区不| 亚洲理论在线| 国产精品www.| 亚洲自拍偷拍麻豆| 欧美高清视频在线观看| 欧美日韩伊人| 欧美成ee人免费视频| 麻豆精品视频在线观看| 激情六月婷婷综合| 欧美高清在线视频| 欧美在线视频免费| 中国女人久久久| 亚洲香蕉网站| 在线成人亚洲| 麻豆9191精品国产| 亚洲另类春色国产| 欧美成人日韩| 99国内精品久久| 久久久91精品国产| 午夜精品偷拍| 欧美精品日韩三级| 亚洲国产99精品国自产| 国产精品啊v在线| 免费在线观看精品| 欧美国产精品中文字幕| 久久久久久久91| 国产精品人人做人人爽人人添| 亚欧成人在线| 欧美精品免费观看二区| 欧美成人精品h版在线观看| 久久9热精品视频| 久久―日本道色综合久久| 午夜精品国产更新| 日韩亚洲欧美高清| 欧美一区二区三区男人的天堂 | 卡通动漫国产精品| 欧美h视频在线| 午夜在线观看欧美| 欧美福利在线| 久久男人av资源网站| 欧美精品免费观看二区| 久久另类ts人妖一区二区| 欧美激情亚洲| 欧美aⅴ99久久黑人专区| 国产精品日本精品| 亚洲经典三级| 国产一区二区三区四区五区美女| 亚洲精品一区二区三区樱花| 亚洲电影在线免费观看| 欧美亚洲综合久久| 亚洲女同同性videoxma| 欧美高清不卡在线| 美女视频黄 久久| 国产亚洲视频在线观看| 日韩一区二区久久| 亚洲精品美女在线| 麻豆免费精品视频| 亚洲精品中文字幕女同| 久久精品女人| 久久久久se| 国产亚洲成人一区| 亚洲综合精品四区| 亚洲欧美日韩精品久久| 欧美日韩亚洲激情| 亚洲日韩视频| 日韩一区二区精品在线观看| 久久婷婷国产综合国色天香| 久久久久久穴| 一区二区视频免费在线观看 | 亚洲视频第一页| 一区二区三区四区国产精品| 欧美xx69| 亚洲欧洲日本国产| 99在线热播精品免费99热| 欧美激情免费观看| 亚洲精品日韩在线观看| 夜夜躁日日躁狠狠久久88av| 欧美精品1区2区| 亚洲另类自拍| 亚洲欧美日韩电影| 国产精品自拍在线| 欧美在线视频一区| 免费成人高清视频| 亚洲日韩欧美视频一区| 欧美区视频在线观看| 一区二区三区不卡视频在线观看| 亚洲一级网站| 激情另类综合| 欧美日本精品一区二区三区| 一区二区三区免费网站| 欧美成人精精品一区二区频| 亚洲国产欧美久久| 亚洲午夜在线观看视频在线| 国产精品日本一区二区| 欧美一区二区三区四区高清| 久久全国免费视频| 亚洲精选在线观看| 国产精品乱码一区二三区小蝌蚪 | 欧美日韩一级大片网址| 亚洲性夜色噜噜噜7777| 久久久综合精品| 亚洲精品久久久久中文字幕欢迎你| 欧美顶级艳妇交换群宴| 亚洲视频图片小说| 久久久久久久久一区二区| 一区二区三区在线不卡| 欧美日本久久| 欧美一区二区三区视频| 亚洲欧洲精品天堂一级| 欧美资源在线观看| 亚洲精品欧洲精品| 国产在线观看精品一区二区三区 | 日韩午夜精品| 麻豆久久婷婷| 午夜精品理论片| 亚洲狠狠丁香婷婷综合久久久| 国产精品a久久久久| 久久影院午夜片一区| 在线综合亚洲| 亚洲人久久久| 欧美va亚洲va日韩∨a综合色| 午夜精品一区二区三区四区| 欧美激情国产精品| 欧美日精品一区视频| 久久久青草婷婷精品综合日韩| 一本久道久久综合婷婷鲸鱼| 欧美大胆人体视频| 久久精品视频导航| 亚洲一区二区三区在线视频| 亚洲第一在线| 国产在线国偷精品产拍免费yy| 国产精品第三页| 欧美日韩精品欧美日韩精品一| 美女亚洲精品|