diff --git a/src/connector/jdbc/.classpath b/src/connector/jdbc/.classpath new file mode 100644 index 0000000000..39abf1c5e9 --- /dev/null +++ b/src/connector/jdbc/.classpath @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/connector/jdbc/.project b/src/connector/jdbc/.project new file mode 100644 index 0000000000..656ab58d20 --- /dev/null +++ b/src/connector/jdbc/.project @@ -0,0 +1,23 @@ + + + taos-jdbcdriver + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/src/connector/jdbc/pom.xml b/src/connector/jdbc/pom.xml index 456c9e6423..5aa4f6a2e3 100755 --- a/src/connector/jdbc/pom.xml +++ b/src/connector/jdbc/pom.xml @@ -53,17 +53,17 @@ commons-lang3 ${commons-lang3.version} - - junit - junit - 4.8.2 - test - org.jacoco jacoco-maven-plugin 0.8.3 + + junit + junit + 4.13 + test + diff --git a/src/connector/jdbc/src/test/java/TestAsyncTSDBSubscribe.java b/src/connector/jdbc/src/test/java/TestAsyncTSDBSubscribe.java index 6e7cd19888..55ab2fdc52 100644 --- a/src/connector/jdbc/src/test/java/TestAsyncTSDBSubscribe.java +++ b/src/connector/jdbc/src/test/java/TestAsyncTSDBSubscribe.java @@ -43,7 +43,11 @@ public class TestAsyncTSDBSubscribe { try { Class.forName("com.taosdata.jdbc.TSDBDriver"); Properties properties = new Properties(); - properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host); + properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host); + properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8"); + properties.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8"); + properties.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8"); + properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8"); connection = DriverManager.getConnection("jdbc:TAOS://" + host + ":0/" + dbName + "?user=root&password=taosdata", properties); String rawSql = "select * from " + tName + ";"; TSDBSubscribe subscribe = ((TSDBConnection) connection).createSubscribe(); diff --git a/src/connector/jdbc/src/test/java/TestTSDBSubscribe.java b/src/connector/jdbc/src/test/java/TestTSDBSubscribe.java index a30339eb53..f628f3cada 100644 --- a/src/connector/jdbc/src/test/java/TestTSDBSubscribe.java +++ b/src/connector/jdbc/src/test/java/TestTSDBSubscribe.java @@ -46,7 +46,10 @@ public class TestTSDBSubscribe { try { Class.forName("com.taosdata.jdbc.TSDBDriver"); Properties properties = new Properties(); - properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host); + properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host); + properties.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8"); + properties.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8"); + properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8"); connection = DriverManager.getConnection("jdbc:TAOS://" + host + ":0/" + dbName + "?user=root&password=taosdata" , properties); String rawSql = "select * from " + tName + ";"; diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/AsyncSubscribeTest.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/AsyncSubscribeTest.java index b613cd4867..98b0d38b8d 100644 --- a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/AsyncSubscribeTest.java +++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/AsyncSubscribeTest.java @@ -30,6 +30,9 @@ public class AsyncSubscribeTest { } Properties properties = new Properties(); properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host); + properties.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8"); + properties.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8"); + properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8"); connection = DriverManager.getConnection("jdbc:TAOS://" + host + ":0/" + "?user=root&password=taosdata" , properties); @@ -91,5 +94,6 @@ public class AsyncSubscribeTest { statement.executeQuery("drop database test"); statement.close(); connection.close(); + Thread.sleep(10); } } \ No newline at end of file diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/ConnectionTest.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/ConnectionTest.java index a932f28113..5e5dabfe81 100644 --- a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/ConnectionTest.java +++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/ConnectionTest.java @@ -26,6 +26,9 @@ public class ConnectionTest { } Properties properties = new Properties(); properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host); + properties.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8"); + properties.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8"); + properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8"); connection = DriverManager.getConnection("jdbc:TAOS://" + host + ":0/" + "?user=root&password=taosdata" , properties); @@ -50,8 +53,9 @@ public class ConnectionTest { statement.close(); } connection.close(); + Thread.sleep(10); } - } catch (SQLException e) { + } catch (Exception e) { assert false : "close connection error: " + e.getMessage(); } } diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/DatabaseMetaDataTest.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/DatabaseMetaDataTest.java index 064279404b..20ebc093ec 100644 --- a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/DatabaseMetaDataTest.java +++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/DatabaseMetaDataTest.java @@ -23,6 +23,9 @@ public class DatabaseMetaDataTest { } Properties properties = new Properties(); properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host); + properties.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8"); + properties.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8"); + properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8"); connection = DriverManager.getConnection("jdbc:TAOS://" + host + ":0/" + "?user=root&password=taosdata", properties); @@ -232,9 +235,11 @@ public class DatabaseMetaDataTest { } @AfterClass - public static void close() throws SQLException { + public static void close() throws Exception { statement.executeUpdate("drop database " + dbName); statement.close(); connection.close(); + Thread.sleep(10); + } } diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/ImportTest.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/ImportTest.java index 063046bc74..b42d46aefe 100644 --- a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/ImportTest.java +++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/ImportTest.java @@ -25,6 +25,9 @@ public class ImportTest { } Properties properties = new Properties(); properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host); + properties.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8"); + properties.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8"); + properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8"); connection = DriverManager.getConnection("jdbc:TAOS://" + host + ":0/" + "?user=root&password=taosdata" , properties); @@ -40,7 +43,7 @@ public class ImportTest { long ts = 1496732686000l; for (int i = 0; i < 50; i++) { - ts ++; + ts++; int row = statement.executeUpdate("insert into " + dbName + "." + tName + " values (" + ts + ", " + (100 + i) + ", " + i + ")"); System.out.println("insert into " + dbName + "." + tName + " values (" + ts + ", " + (100 + i) + ", " + i + ")\t" + row); assertEquals(1, row); @@ -84,5 +87,7 @@ public class ImportTest { statement.executeUpdate("drop database " + dbName); statement.close(); connection.close(); + Thread.sleep(10); + } } diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/PreparedStatementTest.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/PreparedStatementTest.java index 36b8731175..4c49727a7f 100644 --- a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/PreparedStatementTest.java +++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/PreparedStatementTest.java @@ -2,15 +2,17 @@ package com.taosdata.jdbc; import org.junit.AfterClass; import org.junit.BeforeClass; +import org.junit.FixMethodOrder; import org.junit.Test; +import org.junit.runners.MethodSorters; import java.sql.*; -import java.util.ArrayList; import java.util.Properties; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; +@FixMethodOrder(MethodSorters.DEFAULT) public class PreparedStatementTest { static Connection connection = null; static PreparedStatement statement = null; @@ -28,6 +30,9 @@ public class PreparedStatementTest { } Properties properties = new Properties(); properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host); + properties.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8"); + properties.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8"); + properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8"); connection = DriverManager.getConnection("jdbc:TAOS://" + host + ":0/" + "?user=root&password=taosdata", properties); @@ -155,11 +160,11 @@ public class PreparedStatementTest { } catch (SQLException e) { } try { - tsdbStatement.executeUpdate(null, new int[] { 0 }); + tsdbStatement.executeUpdate(null, new int[]{0}); } catch (SQLException e) { } try { - tsdbStatement.executeUpdate(null, new String[] { "str1", "str2" }); + tsdbStatement.executeUpdate(null, new String[]{"str1", "str2"}); } catch (SQLException e) { } try { @@ -185,10 +190,12 @@ public class PreparedStatementTest { } @AfterClass - public static void close() throws SQLException { + public static void close() throws Exception { statement.executeUpdate("drop database " + dbName); statement.close(); connection.close(); + Thread.sleep(10); + } } diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/ResultSetTest.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/ResultSetTest.java index 9d5f5451f2..2b74a98db2 100644 --- a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/ResultSetTest.java +++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/ResultSetTest.java @@ -30,6 +30,11 @@ public class ResultSetTest { } Properties properties = new Properties(); properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host); + properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8"); + properties.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8"); + properties.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8"); + properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8"); + connection = DriverManager.getConnection("jdbc:TAOS://" + host + ":0/" + "?user=root&password=taosdata" , properties); @@ -813,10 +818,12 @@ public class ResultSetTest { } @AfterClass - public static void close() throws SQLException { + public static void close() throws Exception { statement.executeUpdate("drop database " + dbName); statement.close(); connection.close(); + Thread.sleep(10); + } } diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/SelectTest.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/SelectTest.java index 077f95318b..282ca6c1a7 100644 --- a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/SelectTest.java +++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/SelectTest.java @@ -25,6 +25,9 @@ public class SelectTest { } Properties properties = new Properties(); properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host); + properties.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8"); + properties.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8"); + properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8"); connection = DriverManager.getConnection("jdbc:TAOS://" + host + ":0/" + "?user=root&password=taosdata" , properties); @@ -59,9 +62,11 @@ public class SelectTest { } @After - public void close() throws SQLException { + public void close() throws Exception { statement.executeUpdate("drop database " + dbName); statement.close(); connection.close(); + Thread.sleep(10); + } } diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/StableTest.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/StableTest.java index b0c5862dec..b275112e18 100644 --- a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/StableTest.java +++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/StableTest.java @@ -2,13 +2,16 @@ package com.taosdata.jdbc; import org.junit.AfterClass; import org.junit.BeforeClass; +import org.junit.FixMethodOrder; import org.junit.Test; +import org.junit.runners.MethodSorters; import java.sql.*; import java.util.Properties; import static org.junit.Assert.assertEquals; +@FixMethodOrder(MethodSorters.NAME_ASCENDING) public class StableTest { static Connection connection = null; static Statement statement = null; @@ -25,6 +28,9 @@ public class StableTest { } Properties properties = new Properties(); properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host); + properties.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8"); + properties.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8"); + properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8"); connection = DriverManager.getConnection("jdbc:TAOS://" + host + ":0/" + "?user=root&password=taosdata" , properties); @@ -33,7 +39,7 @@ public class StableTest { statement.executeQuery("use " + dbName); } - @Test +// @Test public void createStable() { String sql = "create table " + stbName + " (ts timestamp, v1 int, v2 int) tags (tg nchar(20)) "; @@ -44,7 +50,7 @@ public class StableTest { } } - @Test +// @Test public void createTable() { String sql = "create table t1 using " + stbName + " tags (\"beijing\")"; @@ -57,6 +63,7 @@ public class StableTest { @Test public void describeSTable() { + createStable(); String sql = "describe " + stbName; int num = 0; System.out.println("describe stable"); @@ -68,6 +75,7 @@ public class StableTest { } num++; } + res.close(); assertEquals(4, num); } catch (SQLException e) { assert false : "error describe stable" + e.getMessage(); @@ -76,6 +84,7 @@ public class StableTest { @Test public void describeTable() { + createTable(); String sql = "describe t1"; int num = 0; System.out.println("describe table"); @@ -87,16 +96,17 @@ public class StableTest { } num++; } + res.close(); assertEquals(4, num); } catch (SQLException e) { assert false : "error describe stable" + e.getMessage(); } } - @Test + // @Test public void validCreateSql() { String sql = "create table t2 using " + stbName + " tags (\"beijing\")"; - boolean valid = ((TSDBConnection)connection).getConnection().validateCreateTableSql(sql); + boolean valid = ((TSDBConnection) connection).getConnection().validateCreateTableSql(sql); assertEquals(true, valid); } @@ -106,6 +116,8 @@ public class StableTest { statement.executeUpdate("drop database " + dbName); statement.close(); connection.close(); + Thread.sleep(10); + } } } diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/StatementTest.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/StatementTest.java index 5141e87405..4be68519c5 100644 --- a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/StatementTest.java +++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/StatementTest.java @@ -1,5 +1,6 @@ package com.taosdata.jdbc; +import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; @@ -26,6 +27,9 @@ public class StatementTest { } Properties properties = new Properties(); properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host); + properties.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8"); + properties.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8"); + properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8"); connection = DriverManager.getConnection("jdbc:TAOS://" + host + ":0/" + "?user=root&password=taosdata" , properties); @@ -156,4 +160,15 @@ public class StatementTest { } catch (SQLException e) { } } + + @AfterClass + public static void close() throws Exception { + if (!statement.isClosed()) { + statement.executeUpdate("drop database " + dbName); + statement.close(); + connection.close(); + Thread.sleep(10); + + } + } } diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/SubscribeTest.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/SubscribeTest.java index 35999ea59a..25f7f7a285 100644 --- a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/SubscribeTest.java +++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/SubscribeTest.java @@ -29,6 +29,9 @@ public class SubscribeTest { } Properties properties = new Properties(); properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host); + properties.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8"); + properties.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8"); + properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8"); connection = DriverManager.getConnection("jdbc:TAOS://" + host + ":0/" + "?user=root&password=taosdata" , properties); @@ -86,5 +89,6 @@ public class SubscribeTest { statement.executeQuery("drop database " + dbName); statement.close(); connection.close(); + Thread.sleep(10); } } \ No newline at end of file diff --git a/src/kit/taosnetwork/client.c b/src/kit/taosnetwork/client.c index 65b866a99b..b2c7f729b5 100644 --- a/src/kit/taosnetwork/client.c +++ b/src/kit/taosnetwork/client.c @@ -13,6 +13,7 @@ * along with this program. If not, see . */ +#include #include #include #include @@ -34,6 +35,36 @@ typedef struct { char *host[15]; } info; +typedef struct Arguments { + char * host; + uint16_t port; + uint16_t max_port; +} SArguments; + +static struct argp_option options[] = { + {0, 'h', "host", 0, "The host to connect to TDEngine. Default is localhost.", 0}, + {0, 'p', "port", 0, "The TCP or UDP port number to use for the connection. Default is 6020.", 1}, + {0, 'm', "max port", 0, "The max TCP or UDP port number to use for the connection. Default is 6050.", 2}}; + +static error_t parse_opt(int key, char *arg, struct argp_state *state) { + + SArguments *arguments = state->input; + switch (key) { + case 'h': + arguments->host = arg; + break; + case 'p': + arguments->port = atoi(arg); + break; + case 'm': + arguments->max_port = atoi(arg); + break; + } + return 0; +} + +static struct argp argp = {options, parse_opt, 0, 0}; + void *checkPort(void *sarg) { info *pinfo = (info *)sarg; int port = pinfo->port; @@ -97,7 +128,7 @@ void *checkUPort(void *sarg) { sprintf(sendbuf, "send msg port_%d by udp", port); - socklen_t sin_size = sizeof(*(struct sockaddr*)&serverAddr); + socklen_t sin_size = sizeof(*(struct sockaddr *)&serverAddr); sendto(clientSocket, sendbuf, strlen(sendbuf), 0, (struct sockaddr *)&serverAddr, (int)sin_size); @@ -113,14 +144,19 @@ void *checkUPort(void *sarg) { return NULL; } -int main() { - int port = 6020; - char *host = "127.0.0.1"; +int main(int argc, char *argv[]) { + SArguments arguments = {"127.0.0.1", 6020, 6050}; + + argp_parse(&argp, argc, argv, 0, 0, &arguments); + + printf("host: %s\tport: %d\tmax_port: %d\n", arguments.host, arguments.port, arguments.max_port); + + int port = arguments.port; + char *host = arguments.host; info *tinfo = malloc(sizeof(info)); info *uinfo = malloc(sizeof(info)); - for (size_t i = 0; i < 30; i++) { - port++; + for (; port < arguments.max_port; port++) { printf("For test: %s:%d\n", host, port); *tinfo->host = host; diff --git a/src/kit/taosnetwork/server.c b/src/kit/taosnetwork/server.c index 7dcc9cbeda..c967828f0b 100644 --- a/src/kit/taosnetwork/server.c +++ b/src/kit/taosnetwork/server.c @@ -13,6 +13,7 @@ * along with this program. If not, see . */ +#include #include #include #include @@ -34,6 +35,36 @@ typedef struct { int type; // 0: tcp, 1: udo, default: 0 } info; +typedef struct Arguments { + char * host; + uint16_t port; + uint16_t max_port; +} SArguments; + +static struct argp_option options[] = { + {0, 'h', "host", 0, "The host to connect to TDEngine. Default is localhost.", 0}, + {0, 'p', "port", 0, "The TCP or UDP port number to use for the connection. Default is 6020.", 1}, + {0, 'm', "max port", 0, "The max TCP or UDP port number to use for the connection. Default is 6050.", 2}}; + +static error_t parse_opt(int key, char *arg, struct argp_state *state) { + + SArguments *arguments = state->input; + switch (key) { + case 'h': + arguments->host = arg; + break; + case 'p': + arguments->port = atoi(arg); + break; + case 'm': + arguments->max_port = atoi(arg); + break; + } + return 0; +} + +static struct argp argp = {options, parse_opt, 0, 0}; + static void *bindPort(void *sarg) { info *pinfo = (info *)sarg; int port = pinfo->port; @@ -170,15 +201,21 @@ static void *bindUPort(void *sarg) { } -int main() { - int port = 6020; - pthread_t *pids = malloc(60 * sizeof(pthread_t)); - info * infos = malloc(30 * sizeof(info)); - info * uinfos = malloc(30 * sizeof(info)); +int main(int argc, char *argv[]) { + SArguments arguments = {"127.0.0.1", 6020, 6050}; + argp_parse(&argp, argc, argv, 0, 0, &arguments); + int port = arguments.port; - for (size_t i = 0; i < 30; i++) { - port++; + int num = arguments.max_port - arguments.port; + if (num < 0) { + num = 1; + } + pthread_t *pids = malloc(2 * num * sizeof(pthread_t)); + info * infos = malloc(num * sizeof(info)); + info * uinfos = malloc(num * sizeof(info)); + + for (size_t i = 0; i < num; i++) { info *pinfo = infos++; pinfo->port = port; @@ -191,14 +228,15 @@ int main() { info *uinfo = uinfos++; uinfo->port = port; uinfo->type = 1; - if (pthread_create(pids + 30 + i, NULL, bindUPort, uinfo) != 0) //创建线程 + port++; + if (pthread_create(pids + num + i, NULL, bindUPort, uinfo) != 0) //创建线程 { //创建线程失败 printf("创建线程失败: %d.\n", port); exit(0); } } - for (int i = 0; i < 30; i++) { + for (int i = 0; i < num; i++) { pthread_join(pids[i], NULL); - pthread_join(pids[(10 + i)], NULL); + pthread_join(pids[(num + i)], NULL); } } diff --git a/src/kit/taosnetwork/taosnetwork_client.c b/src/kit/taosnetwork/taosnetwork_client.c deleted file mode 100644 index 072610a035..0000000000 --- a/src/kit/taosnetwork/taosnetwork_client.c +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2019 TAOS Data, Inc. - * - * This program is free software: you can use, redistribute, and/or modify - * it under the terms of the GNU Affero General Public License, version 3 - * or later ("AGPL"), as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -#include -#include -#include -#include -#include -#include -#define SERVER_PORT 8000 -#define SIZE 200 - -int main() { - struct sockaddr_in servaddr, cliaddr; - socklen_t cliaddr_len; - int client_sockfd; - char buf[SIZE]; - char recvbuf[SIZE]; - - int i, n, flag = 0; - - int len, iDataNum; - - client_sockfd = socket(AF_INET, SOCK_STREAM, 0); - bzero(&servaddr, sizeof(servaddr)); - servaddr.sin_family = AF_INET; - servaddr.sin_addr.s_addr = htonl(INADDR_ANY); - servaddr.sin_port = htons(SERVER_PORT); - - if (connect(client_sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0) { - printf("Connected error..\n"); - return 0; - } - printf("Connected to server..\n"); - - /*循环的发送接收信息并打印接收信息(可以按需发送)--recv返回接收到的字节数,send返回发送的字节数*/ - while (1) { - printf("Enter string to send:"); - scanf("%s", buf); - if (!strcmp(buf, "quit")) { - break; - } - len = (sizeof buf); - - recvbuf[0] = '\0'; - - iDataNum = recv(client_sockfd, recvbuf, SIZE, 0); - - recvbuf[iDataNum] = '\0'; - - printf("%s\n", recvbuf); - } - return 0; -} diff --git a/src/kit/taosnetwork/taosnetwork_server.c b/src/kit/taosnetwork/taosnetwork_server.c deleted file mode 100644 index 1ec20716fa..0000000000 --- a/src/kit/taosnetwork/taosnetwork_server.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2019 TAOS Data, Inc. - * - * This program is free software: you can use, redistribute, and/or modify - * it under the terms of the GNU Affero General Public License, version 3 - * or later ("AGPL"), as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -#include -#include -#include -#include -#include -#include -#define SERVER_PORT 8000 -#define SIZE 200 - -int main() { - struct sockaddr_in servaddr, cliaddr; - socklen_t cliaddr_len; - int listenfd, connfd; - char buf[BUFSIZ]; - int i, n, flag = 0; - - listenfd = socket(AF_INET, SOCK_STREAM, 0); - bzero(&servaddr, sizeof(servaddr)); - servaddr.sin_family = AF_INET; - servaddr.sin_addr.s_addr = htonl(INADDR_ANY); - servaddr.sin_port = htons(SERVER_PORT); - bind(listenfd, (struct sockaddr *)&servaddr, sizeof(servaddr)); - listen(listenfd, 20); - - printf("Accepting connections..\n"); - while (1) { - cliaddr_len = sizeof(cliaddr); - connfd = accept(listenfd, (struct sockaddr *)&cliaddr, - &cliaddr_len); //如果得不到客户端发来的消息,将会被阻塞,一直等到消息到来 - n = read(connfd, buf, SIZE); //如果n<=0,表示客户端已断开 - while (1) { - if (n != 0) { - for (i = 0; i < n; i++) printf("%c", buf[i]); //输出客户端发来的信息 - } else { - printf("Client say close the connection..\n"); - break; - } - n = read(connfd, buf, SIZE); - } - close(connfd); - } -} diff --git a/src/kit/taosnetwork/test_client.c b/src/kit/taosnetwork/test_client.c deleted file mode 100644 index 0c863c6a99..0000000000 --- a/src/kit/taosnetwork/test_client.c +++ /dev/null @@ -1,50 +0,0 @@ -#include -#include -#include -#include -#include - -#define SERVER_PORT 8888 -#define BUFF_LEN 512 -#define SERVER_IP "172.0.5.182" - -void udp_msg_sender(int fd, struct sockaddr* dst) {} - -/* - client: - socket-->sendto-->revcfrom-->close -*/ - -int main(int argc, char* argv[]) { - int client_fd; - struct sockaddr_in ser_addr; - - client_fd = socket(AF_INET, SOCK_DGRAM, 0); - if (client_fd < 0) { - printf("create socket fail!\n"); - return -1; - } - - memset(&ser_addr, 0, sizeof(ser_addr)); - ser_addr.sin_family = AF_INET; - // ser_addr.sin_addr.s_addr = inet_addr(SERVER_IP); - ser_addr.sin_addr.s_addr = htonl(INADDR_ANY); //注意网络序转换 - ser_addr.sin_port = htons(SERVER_PORT); //注意网络序转换 - - socklen_t len; - struct sockaddr_in src; - while (1) { - char buf[BUFF_LEN] = "TEST UDP MSG!\n"; - len = sizeof(*(struct sockaddr*)&ser_addr); - printf("client:%s\n", buf); //打印自己发送的信息 - sendto(client_fd, buf, BUFF_LEN, 0, (struct sockaddr*)&ser_addr, len); - memset(buf, 0, BUFF_LEN); - recvfrom(client_fd, buf, BUFF_LEN, 0, (struct sockaddr*)&src, &len); //接收来自server的信息 - printf("server:%s\n", buf); - sleep(1); //一秒发送一次消息 - } - - close(client_fd); - - return 0; -} \ No newline at end of file diff --git a/src/kit/taosnetwork/test_server.c b/src/kit/taosnetwork/test_server.c deleted file mode 100644 index 3bfbaa4f7c..0000000000 --- a/src/kit/taosnetwork/test_server.c +++ /dev/null @@ -1,63 +0,0 @@ -#include -#include -#include -#include -#include - -#define SERVER_PORT 8888 -#define BUFF_LEN 1024 - -void handle_udp_msg(int fd) { - char buf[BUFF_LEN]; //接收缓冲区,1024字节 - socklen_t len; - int count; - struct sockaddr_in clent_addr; // clent_addr用于记录发送方的地址信息 - while (1) { - memset(buf, 0, BUFF_LEN); - len = sizeof(clent_addr); - count = - recvfrom(fd, buf, BUFF_LEN, 0, (struct sockaddr*)&clent_addr, &len); // recvfrom是拥塞函数,没有数据就一直拥塞 - if (count == -1) { - printf("recieve data fail!\n"); - return; - } - printf("client:%s\n", buf); //打印client发过来的信息 - memset(buf, 0, BUFF_LEN); - sprintf(buf, "I have recieved %d bytes data!\n", count); //回复client - printf("server:%s\n", buf); //打印自己发送的信息给 - sendto(fd, buf, BUFF_LEN, 0, (struct sockaddr*)&clent_addr, - len); //发送信息给client,注意使用了clent_addr结构体指针 - } -} - -/* - server: - socket-->bind-->recvfrom-->sendto-->close -*/ - -int main(int argc, char* argv[]) { - int server_fd, ret; - struct sockaddr_in ser_addr; - - server_fd = socket(AF_INET, SOCK_DGRAM, 0); // AF_INET:IPV4;SOCK_DGRAM:UDP - if (server_fd < 0) { - printf("create socket fail!\n"); - return -1; - } - - memset(&ser_addr, 0, sizeof(ser_addr)); - ser_addr.sin_family = AF_INET; - ser_addr.sin_addr.s_addr = htonl(INADDR_ANY); // IP地址,需要进行网络序转换,INADDR_ANY:本地地址 - ser_addr.sin_port = htons(SERVER_PORT); //端口号,需要网络序转换 - - ret = bind(server_fd, (struct sockaddr*)&ser_addr, sizeof(ser_addr)); - if (ret < 0) { - printf("socket bind fail!\n"); - return -1; - } - - handle_udp_msg(server_fd); //处理接收到的数据 - - close(server_fd); - return 0; -} \ No newline at end of file