⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 read_write_string.cpp

📁 MPICH是MPI的重要研究,提供了一系列的接口函数,为并行计算的实现提供了编程环境.
💻 CPP
字号:
#include "mpdutil.h"#include <stdio.h>bool ReadStringMax(SOCKET sock, char *str, int max){    int n;    char *str_orig = str;    int count = 0;    do {	n = easy_receive(sock, str, 1);	if (n == SOCKET_ERROR)	{	    err_printf("eReadString failed, error %d\n", WSAGetLastError());	    return false;	}	if (n == 0)	{	    err_printf("eReadString failed, socket closed\n");	    return false;	}	count++;	if (count == max && *str != '\0')	{	    *str = '\0';	    // truncate, read and discard all further characters of the string	    char ch;	    do {		n = easy_receive(sock, &ch, 1);		if (n == SOCKET_ERROR)		{		    err_printf("eReadString failed, error %d\n", WSAGetLastError());		    return false;		}		if (n == 0)		{		    err_printf("eReadString failed, socket closed\n");		    return false;		}	    } while (ch != '\0');	}    } while (*str++ != '\0');    //dbg_printf("RSM(%s) '%s'\n", bto_string(sock), str_orig);    //dbg_printf_color(FOREGROUND_RED | FOREGROUND_INTENSITY, "RSM(%s) '%s'\n", bto_string(sock), str_orig);    //return strlen(str_orig);    return true;}bool ReadStringTimeout(SOCKET sock, char *str, int timeout){    int n;    char *str_orig = str;    //dbg_printf("reading from %d\n", bget_fd(bfd));    do {	n = 0;	while (!n)	{	    n = easy_receive_timeout(sock, str, 1, timeout);	    if (n == SOCKET_ERROR)	    {		err_printf("eReadStringTimeout failed, error %d\n", WSAGetLastError());		return false;	    }	    if (n == 0)	    {		WSASetLastError(ERROR_TIMEOUT);		return false;	    }	}    } while (*str++ != '\0');    //dbg_printf("RST(%s) '%s'\n", bto_string(bfd), str_orig);    //dbg_printf_color(FOREGROUND_RED | FOREGROUND_INTENSITY, "RST(%s) '%s'\n", bto_string(bfd), str_orig);    //return strlen(str_orig);    return true;}bool ReadString(SOCKET sock, char *str){    int n;    char *str_orig = str;    do {	n = easy_receive(sock, str, 1);	if (n == SOCKET_ERROR)	{	    err_printf("eReadString failed, error %d\n", WSAGetLastError());	    return false;	}	if (n == 0)	{	    err_printf("eReadString failed, socket closed\n");	    return false;	}    } while (*str++ != '\0');    //dbg_printf("RS (%s) '%s'\n", bto_string(sock), str_orig);    //dbg_printf_color(FOREGROUND_RED | FOREGROUND_INTENSITY, "RS (%s) '%s'\n", bto_string(sock), str_orig);    //return strlen(str_orig);    return true;}int WriteString(SOCKET sock, char *str){    int ret_val;    ret_val = easy_send(sock, str, strlen(str)+1);    //dbg_printf("WS (%s), '%s'\n", bto_string(sock), str);    /*    if (ret_val != SOCKET_ERROR)	dbg_printf_color(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY, "WS (%s), '%s'\n", bto_string(sock), str);    else	dbg_printf_color(FOREGROUND_RED | FOREGROUND_GREEN, "WS (%s) failed, '%s'\n", bto_string(sock), str);	*/    return ret_val;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -