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