d语言 c++ 混合编程,C++,D语言,Python语言一次模拟合作开发

我想要做一个网络server,一个网络client。

server主要就是一个echo回应,client连上服务器后打印服务器返回的回应。

Python做一个性能测试,调用50000次client去连接服务器。下面就是各自的代码。

Server:D语言开发。

Client:C/C++语言开发。

性能测试tool:Python语言开发。

Server Code: server.d -> server.exe

private import tango.core.Thread;

private import tango.io.Console;

private import tango.net.ServerSocket,

tango.net.SocketConduit;

void main()

{

const int port = 8080;

auto server = new ServerSocket (new InternetAddress(port));

while(true)

{

// wait for requests

auto request = server.accept;

// write a response

request.output.write ("server replies 'hello'");

}

}

Client Code(must link ws2_32.lib):client.cpp ->

client.exe

#include

#include

int client()

{

SOCKET sClient;

char szBuffer[1024];

sClient =

socket(AF_INET,SOCK_STREAM,IPPROTO_IP);

if (sClient == SOCKET_ERROR)

{

printf("socket() failed:

%d\n",WSAGetLastError());

return 1;

}

struct sockaddr_in server;

server.sin_family = AF_INET;

server.sin_port = htons(8080);

server.sin_addr.s_addr =

inet_addr("172.25.185.116");

struct hostent *host = NULL;

if(server.sin_addr.s_addr == INADDR_NONE)

{

host =

gethostbyname("172.25.185.116");

if(host == NULL)

printf("Unable

to resolve server:%s\n","172.25.185.116");

}

if(connect(sClient,(struct sockaddr

*)&server,sizeof(server)) == SOCKET_ERROR)

{

printf("connect()

failed:%d]n",WSAGetLastError());

return 1;

}

int ret = recv(sClient,szBuffer,1024,0);

szBuffer[ret] = '\0';

printf("RECV [%d

bytes]:'%s'\n",ret,szBuffer);

closesocket(sClient);

return 0;

}

int main(int argc,char* argv[])

{

WSADATA wsaData;

int retval=0;

if(WSAStartup(MAKEWORD(1,1),&wsaData)!=0)

{

return

255;

}

client();

WSACleanup();

return retval;

}

P Tool Code: test.py

import os

for i in range(50000):

os.spawnl(1,'client.exe')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值