Tag: 连接

环回接口上的客户端服务器连接

我正在尝试使用localhost地址测试客户端 – 服务器简单实现。 这是代码。 服务器: /* * Sequential busy-waiting */ int main(int argc, char** argv) { int opt, client_addr_l, errsv; unsigned short port; struct sockaddr_in server_addr, client_addr; /* … */ printf(“Port number retrieved (%d), server is starting …\n”, port); /*TCP Socket creation*/ sock_ds = socket(AF_INET, SOCK_STREAM, 0); if(sock_ds == -1){ fprintf(stderr, “Socket creation error: %s\n”, […]

不能使用IAR ARM编译器强制function表到特定地址

我有一个像这样定义的函数表类型 typedef struct { uint16_t majorRevision; uint16_t minorRevision; uint8_t (*CommInit)(void *); uint8_t (*CommDeInit)(void); uint16_t (*Write)(uint8_t *, uint16_t); uint16_t (*Read)(uint8_t *, uint16_t); uint8_t (*Attached)(void); uint8_t (*ExitApp)(uint8_t); uint8_t (*Jump)(uint32_t address); uint16_t (*GetCRC)(uint8_t*, uint32_t); int (*Encrypt)(uint8_t *, uint32_t); int (*Decrypt)(uint8_t *, uint32_t); uint8_t (*Reset)(void); uint32_t (*GetTickCount)(void); void (*Sleep)(uint32_t); uint8_t (*ReadASCIIByte)(void); uint16_t (*ReadASCIIWord)(void); uint32_t (*ReadASCIIDWord)(void); void (*WriteASCIIByte)(uint8_t); void (*WriteASCIIWord)(uint16_t); […]

C预处理器宏 – 基于参数连接的条件

我需要有关宏的帮助! 假设我已经定义了以下常量 #define foo_tacos_tuesday 1 #define foo_tacos 1 #define foo_nachos_wednesday 2 #define foo_nachos 3 我想编写一个执行以下操作的宏 #define MyFancyMacro( arg1, arg2 ) \ #if ( foo_ ## arg1 ## _ ## arg2 != foo_ ## arg1 ) \ foo_ ## arg1 ## _ ## arg2, foo_ ## arg1, 所以我可以设置一个只映射不匹配值的映射表: static const int mappingTable[] = { MyFancyMacro(tacos, tuesday) […]

Java SSLSocket握手失败

我正在尝试找到一种方法来建立使用SSL的Java客户端和C服务器的连接。 这是java客户端: import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.OutputStreamWriter; import javax.net.ssl.SSLSocket; import javax.net.ssl.SSLSocketFactory; public class Main { public static void main(String[] args) throws IOException { SSLSocketFactory sslsockfact = (SSLSocketFactory) SSLSocketFactory.getDefault(); SSLSocket sslsocket = (SSLSocket) sslsockfact.createSocket( args[0], Integer.parseInt(args[1])); sslsocket.startHandshake(); System.in.read(); } } 它只是建立连接和执行握手的几个函数,但我收到此错误: Exception in thread “main” javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure at […]

C预处理器与变量串联

可能重复: C预处理器和连接 是否可以将C预处理器与变量名连接? #define WIDTH 32 int dataWIDTH; // dataWIDTH should be interpreted as ‘data32’ printf(“%d”,dataWIDTH);

连接X宏的多个标记

我正在尝试第一次使用X宏和预处理器连接。 我已经阅读了很多关于预处理器连接的SO的其他问题,但还没有能够解决它们或者如何使这些问题适应我的用例。 项目列表是一组structs的ID号列表,如下所示: #define LIST_OF_ID_NUMS \ X(1) \ X(2) \ X(3) \ X(4) \ X(5) \ X(6) \ X(7) \ X(8) \ X(9) \ X(10) \ X(11) 我可以像这样声明结构: #define X(id_num) static myFooStruct foo_## id_num ; LIST_OF_ID_NUMS #undef X // gives: ‘struct myFooStruct foo_n;’ where ‘n’ is an ID number 现在我还要初始化每个结构的一个成员等于ID号,这样foo_n.id = n; 。 通过使用以下内容,我已经能够实现第一个令牌连接: #define […]

为char数组分配内存以连接已知的文本和整数

我想连接一段文本,例如“答案是”带有符号整数,给出输出“数字是42”。 我知道这段文字有多长(14个字符),但我不知道该字符串表示的字符数是多少。 我假设最坏的情况,最大的有符号16位整数有5位数,如果它是负数,还有一个额外的,所以下面的代码是正确的方法吗? #include #include int main() { char *message; message = malloc(14*sizeof(char)+(sizeof(int)*5)+1); sprintf(message, “The answer is %d”, 42); puts(message); free(message); }

如何将char数组case 和连接到C中的char指针?

我想连接两个字符’7’和’9’来形成这个字符串“79”。 首先,我初始化了变量。 (限制:我只能使用字符类型,我不能再使用另一个字符变量。) char *charac = (char *) malloc(sizeof(char) * 200); char *combined = (char *) malloc(sizeof(char) * 200); 然后我给出了charac [0]和charac [1]的值。 charac[0] = ‘7’; charac[1] = ‘9’; printf(“charac[0] : %c\n”, charac[0] ); printf(“charac[1] : %c\n”, charac[1] ); 我想连接charac [0]和charac [1] strcpy(combined, (char*)charac[0]); strcat(combined, (char*)charac[1]); printf(“combined : %s\n”, combined); free(combined); 但上面的代码不起作用。 我收到错误消息:“警告:从不同大小的整数转换为指针”。 阅读完所有意见和建议后,我获得了我想要的输出结果。 这是最终的代码: char […]

如何使用带有点的C预处理器连接字符串?

我已经阅读了以下问题,答案似乎很清楚: 如何使用C预处理器连接两次并扩展宏,如“arg ## _ ## MACRO”? 但是如果VARIABLE最后有一个点呢? 我正在尝试做一个简单的宏,增加结构中的计数器以进行调试。 即使没有上述问题的帮助,我也可以轻松地做到这一点 #ifdef DEBUG #define DEBUG_INC_COUNTER(x) x++ #endif 并称之为 DEBUG_INC_COUNT(debugObj.var1); 但是添加“debugObj”。 每个宏看起来都非常多余。 但是,如果我尝试连接: #define VARIABLE debugObj. #define PASTER(x,y) x ## y++ #define EVALUATOR(x,y) PASTER(x,y) #define DEBUG_INC_COUNTER(x) EVALUATOR(VARIABLE, x) DEBUG_INC_COUNTER(var) gcc -E macro.c 我明白了 macro.c:6:1: error: pasting “.” and “var” does not give a valid preprocessing token 那么我应该如何改变这一点呢 DEBUG_INC_COUNTER(var); […]

客户端无法绑定到给定端口并连接到给定服务器

我需要我的客户端绑定到特定端口,然后连接到其服务器。 问题是如果我成功绑定到给定端口但无法连接到服务器。 如果我不尝试绑定到端口,我可以连接到服务器。 以下是我的计划: int main() { int sock, bytes_recieved; char send_data[1024],recv_data[1024]; struct hostent *host; struct sockaddr_in server_addr,client_addr; host = gethostbyname(“127.0.0.1”); if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror(“Socket”); exit(1); } client_addr.sin_family = AF_INET; client_addr.sin_port = htons(4000); client_addr.sin_addr = *((struct in_addr *)host->h_addr); bzero(&(client_addr.sin_zero),8); //host = gethostbyname(“192.168.61.67”); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(2404); server_addr.sin_addr […]