Windows XP多網卡tcp傳輸

來源:互聯網
上載者:User
c++寫的簡單的多個網卡綁定測試用戶端

#include <WinSock2.h>#include <stdio.h>#include <time.h>#include <process.h>#pragma comment(lib, "ws2_32.lib")int tarPort = 0;char szTarget [100] = "";struct tparam{    char szIpAddr [100];    int  port;};void threadrxtx(void * args){    tparam * t = (tparam*) args;    int ret = 0;    SOCKET sfd = socket(AF_INET, SOCK_STREAM, 0);    sockaddr_in sself;    sself.sin_family = AF_INET;    sself.sin_port   = htons(t->port);    sself.sin_addr.s_addr = inet_addr(t->szIpAddr);    ret =  (bind(sfd, (sockaddr *)&sself, sizeof(sself)));    if (ret < 0)    {        printf("$(%s:%d) exit\r\n", __FILE__, __LINE__);        return ;    }    sockaddr_in saddr;    saddr.sin_family = AF_INET;    saddr.sin_port   = htons(tarPort);    saddr.sin_addr.s_addr = inet_addr(szTarget);    ret = (connect(sfd, (sockaddr *)&saddr, sizeof(saddr)));    if (ret < 0)    {        printf("$(%s:%d) exit\r\n", __FILE__, __LINE__);        return ;    }    while (true)    {        char szMsg [0x400] = "";        memset(szMsg, 'A', sizeof(szMsg));        szMsg[0x400-2] = '\r';        szMsg[0x400-1] = '\n';                int rs = send(sfd, szMsg, sizeof(szMsg), 0);        if (rs < 0)        {            printf("$(%s:%d) exit\r\n", __FILE__, __LINE__);            return ;        }        printf(" %s send %d bytes\r\n",t->szIpAddr, rs);        char szbuf [100];        memset(szbuf, 0, 100);        int rr = recv(sfd, szbuf, 100, 0);        if (rr > 0){            szbuf[100-1] = 0;            printf("[%s]time: [%d] msg: ..., bytes: %d .\r\n", t->szIpAddr, GetTickCount(), /*szbuf*/ rr);        }        Sleep(1000);    }    printf("$(%s:%d) exit\r\n", __FILE__, __LINE__);}static void SetCurWorkPathToExe(void){    char szWorkPath [0x200] = "";    GetModuleFileNameA(NULL, szWorkPath, 0x200);    if (strrchr(szWorkPath, '\\'))        strrchr(szWorkPath, '\\')[1] = '\0';    SetCurrentDirectoryA(szWorkPath);}int main(int argc, char * argv){    WSADATA wsadata;    WSAStartup(MAKEWORD(2,2), &wsadata);    SetCurWorkPathToExe();    FILE * fp = fopen("iplist.txt", "r");        fscanf(fp, "%s : %d", szTarget, &tarPort);        char szTest[1000];    fscanf(fp, "%s", szTest);    while (!feof(fp))    {        tparam * t = new tparam;        fscanf(fp, "%s : %d", t->szIpAddr, &t->port);        _beginthread(threadrxtx, 0, t);    }    fclose(fp);    getchar();    return 0;}

一個簡單的java多線程echo伺服器(http://www.4ucode.com/Study/Topic/1128385)

import java.io.*;import java.net.*;public class ThreadedECHOServer{    public static void main(String[] args)    {        int i=1;        try        {            ServerSocket s=new ServerSocket(2500);            for(;;)            {                Socket incoming = s.accept();                System.out.println("Spawning"+i);                new ThreadedEchoHandler(incoming,i).start();                i++;            }        }        catch(Exception e)        {            System.out.println(e);        }    }}class ThreadedEchoHandler extends Thread{    private Socket incoming;    private int counter;    public ThreadedEchoHandler(Socket i,int c)    {        incoming =i;        counter =c;    }        public void run()    {        try        {            BufferedReader in =new BufferedReader(new InputStreamReader(incoming.getInputStream()));            PrintWriter out = new PrintWriter(incoming.getOutputStream(),true);            out.println("Hello!Enter BYE to exit.");            boolean done =false;            while(!done)            {                String str = in.readLine();                if(str == null) done =true;                else                {                    out.println("Echo("+counter+"):"+str);                    if(str.trim().equals("BYE"))                        done = true;                }            }            incoming.close();        }        catch(Exception e)        {            System.out.println(e);        }    }}

iplist.txt (伺服器ip和連接埠,本地網卡和連接埠)

10.12.23.47 : 2500-------------------------------10.0.2.15 : 555310.0.3.15 : 555010.0.4.15 : 555110.0.5.15 : 5552

測試環境是在virtualbox中進行。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.