/* Start a client */ int JSocket::start_client(const char *szIpAddr){ #ifdef NETWORK_SUPPORT int sock; sockaddr_in addrListen; int error; sock = sceNetInetSocket(AF_INET, SOCK_STREAM, 0); if (sock <= 0){ printf("socket returned $%x\n", sock); sceKernelDelayThread(500*1000); return sock; } addrListen.sin_family = AF_INET; addrListen.sin_addr.s_addr = inet_addr(szIpAddr); addrListen.sin_port = htons(SERVER_PORT); int err = sceNetInetConnect(sock, (sockaddr *)&addrListen, sizeof(addrListen)); if (err != 0){ printf("Unable to connect!\n"); printf("connect returned $%x\n", err); printf(" errno=$%x\n", sceNetInetGetErrno()); sceKernelDelayThread(500*1000); return err; } connected = 1; while(1){ readWrite(sock); } #endif return 0; }
KParts::ReadWritePart* PartController::activeReadWrite() const { return readWrite( activePart() ); }
/* Start a server */ int JSocket::start_server(const char *szIpAddr) { #ifdef NETWORK_SUPPORT int ret; int sock; int _new = -1; struct sockaddr_in client; size_t size; int readbytes; fd_set set; fd_set setsave; /* Create a socket for listening */ sock = make_socket(SERVER_PORT); if(sock < 0) { printf("Error creating server socket\n"); return sock; } ret = listen(sock, 1); if(ret < 0) { printf("Error calling listen\n"); return ret; } printf("Listening for connections ip %s port %d\n", szIpAddr, SERVER_PORT); FD_ZERO(&set); FD_SET(sock, &set); setsave = set; while(1) { int i; set = setsave; if(select(FD_SETSIZE, &set, NULL, NULL, NULL) < 0) { printf("select error\n"); return -1; } for(i = 0; i < FD_SETSIZE; i++) { if(FD_ISSET(i, &set)) { int val = i; if(val == sock) { _new = accept(sock, (struct sockaddr *) &client, &size); if(_new < 0) { printf("Error in accept %s\n", strerror(errno)); close(sock); return _new; } printf("New connection %d from %s:%d\n", val, inet_ntoa(client.sin_addr), ntohs(client.sin_port)); write(_new, "123567", strlen("123567")); FD_SET(_new, &setsave); } else { readWrite(val); } } } } close(sock); #endif return 0; }
void docommand(int fd, char * line) { int argc; char * commandStr = NULL; int commandStrLen = 0; int commandCommandLen = 0; char ** argv; int i = 0; argv = parseLine(line, &argc); if (argv == NULL) { printf("Invalid argument(s)\n"); } else { if (!strncmp(argv[0], "set", 3) || !strncmp(argv[0], "add", 3) || !strncmp(argv[0], "replace", 6)) { if (argc < 3) { goto free; } commandStr = concatStr(commandStr, argv[0]); commandStr = concatStr(commandStr, " "); commandStr = concatStr(commandStr, argv[1]); commandStr = concatStr(commandStr, " "); if (argc >= 5) { commandStr = concatStr(commandStr, argv[4]); } else { commandStr = concatStr(commandStr, "0"); } commandStr = concatStr(commandStr, " "); if (argc >= 4) { commandStr = concatStr(commandStr, argv[3]); } else { commandStr = concatStr(commandStr, "3600"); } commandStr = concatStr(commandStr, " "); commandStr = concatStr(commandStr, intToString((int)strlen(argv[2]))); commandStr = concatStr(commandStr, "\r\n"); commandStr = concatStr(commandStr, argv[2]); commandStr = concatStr(commandStr, "\r\n"); } else if (!strncmp(argv[0], "get", 3) || !strncmp(argv[0], "gets", 3)) { commandStr = concatStr(commandStr, argv[0]); commandStr = concatStr(commandStr, " "); for (i = 1; i < argc - 1; i ++) { commandStr = concatStr(commandStr, argv[i]); commandStr = concatStr(commandStr, " "); } commandStr = concatStr(commandStr, argv[argc - 1]); commandStr = concatStr(commandStr, "\r\n"); } else if (!strncmp(argv[0], "delete", 6)) { commandStr = concatStr(commandStr, argv[0]); commandStr = concatStr(commandStr, " "); commandStr = concatStr(commandStr, argv[1]); commandStr = concatStr(commandStr, "\r\n"); } else if (!strncmp(argv[0], "flush_all", 8) || !strncmp(argv[0], "version", 6) || !strncmp(argv[0], "quit", 4) || !strncmp(argv[0], "stats", 5) || !strncmp(argv[0], "stats settings", strlen("stats settings"))) { commandStr = concatStr(commandStr, argv[0]); commandStr = concatStr(commandStr, "\r\n"); if (!strncmp(argv[0], "quit", 4)) { exit(0); } } else if (!strncmp(argv[0], "incr", 4) || !strncmp(argv[0], "decr", 4)) { commandStr = concatStr(commandStr, argv[0]); commandStr = concatStr(commandStr, " "); commandStr = concatStr(commandStr, argv[1]); commandStr = concatStr(commandStr, " "); if (argc == 3) { commandStr = concatStr(commandStr, argv[2]); } else { commandStr = concatStr(commandStr, "1"); } commandStr = concatStr(commandStr, "\r\n"); } else if (!strncmp(argv[0], "append", 6) || !strncmp(argv[0], "prepend", 6)) { commandStr = concatStr(commandStr, argv[0]); commandStr = concatStr(commandStr, " "); commandStr = concatStr(commandStr, argv[1]); commandStr = concatStr(commandStr, " "); commandStr = concatStr(commandStr, argv[2]); commandStr = concatStr(commandStr, "\r\n"); } else if (!strncmp(argv[0], "touch", 5)) { commandStr = concatStr(commandStr, argv[0]); commandStr = concatStr(commandStr, " "); commandStr = concatStr(commandStr, argv[1]); commandStr = concatStr(commandStr, " "); if (argc == 3) { commandStr = concatStr(commandStr, argv[2]); } else { commandStr = concatStr(commandStr, "3600"); } } else { printf("Invalid argument(s)\n"); goto free; } readWrite(fd, commandStr); } free: for(i = 0; i < argc; i ++ ) { free(argv[i]); } free(argv); if (commandStr) { free(commandStr); } }
uint8_t Spi::readWrite(uint8_t data) { return readWrite((uint16_t)data); }