diff --git a/app/src/main/ets/pages/Index.ets b/app/src/main/ets/pages/Index.ets index ee8d2b0..1111ac9 100644 --- a/app/src/main/ets/pages/Index.ets +++ b/app/src/main/ets/pages/Index.ets @@ -17,10 +17,11 @@ struct Index { readonly itemGroups: HomeItemGroup[] = [ //Web部分 { - name: 'Web', + name: 'Net', items: [ { name: 'WebPage', page: 'pages/web/WebPage' }, - { name: 'WebDialogPage', page: 'pages/web/WebDialogPage' } + { name: 'WebDialogPage', page: 'pages/web/WebDialogPage' }, + { name: "TcpSocket", page: 'pages/net/TcpSocketPage'} ] }, // 布局 diff --git a/app/src/main/ets/pages/net/TcpSocketPage.ets b/app/src/main/ets/pages/net/TcpSocketPage.ets new file mode 100644 index 0000000..5732368 --- /dev/null +++ b/app/src/main/ets/pages/net/TcpSocketPage.ets @@ -0,0 +1,79 @@ + +import socket from "@ohos.net.socket"; +import { BusinessError } from '@ohos.base'; +import { Log } from '@devwiki/base/Index'; + +class TcpSocket { + tcp: socket.TCPSocket = socket.constructTCPSocketInstance(); + connectOptions: socket.TCPConnectOptions = { + address: { + address: '172.33.108.207', + port: 10000 + }, + timeout: 6000 + } + + constructor() { + + } + + init() { + let messageView = ''; + this.tcp.on("message", (value: socket.SocketMessageInfo) =>{ + for (let i: number = 0; i < value.message.byteLength; i++) { + let uint8Array = new Uint8Array(value.message) + let messages = uint8Array[i] + let message = String.fromCharCode(messages); + messageView += message; + } + Log.i(`receive message: ${messageView}`) + }) + this.tcp.on('error', (error) => { + Log.i(`tcp error: ${error.message}`) + }) + } + + connect() { + let address: socket.NetAddress = { + address: '172.33.108.207', + } + this.tcp.bind(address) + this.tcp.connect(this.connectOptions, (error) => { + if (error) { + Log.e(`connect fail: ${error.message}`); + return; + } + Log.i('connect success') + }) + } + + send(text: string) { + let option: socket.TCPSendOptions = { data: text} + this.tcp.send(option).then(() => { + Log.i(`send data: ${text} success`) + }).catch((error: BusinessError) => { + Log.e(`send data: ${text} error: ${error.message}`) + }) + } +} + + +@Component +@Entry +export struct TcpSocketPage { + + tcpSocket: TcpSocket = new TcpSocket(); + + aboutToAppear(): void { + this.tcpSocket.init(); + this.tcpSocket.connect(); + } + + build() { + Column(){ + Button("Send").width(80).height(32).onClick(() => { + this.tcpSocket.send("test") + }) + }.width('100%').height('100%').justifyContent(FlexAlign.Center) + } +} \ No newline at end of file diff --git a/app/src/main/resources/base/profile/main_pages.json b/app/src/main/resources/base/profile/main_pages.json index 213525a..19ca501 100644 --- a/app/src/main/resources/base/profile/main_pages.json +++ b/app/src/main/resources/base/profile/main_pages.json @@ -7,6 +7,7 @@ "pages/layout/RelativeContainerPage", "pages/animation/CompTransitionPage", "pages/media/AVPlayerPage", - "pages/system/SchemePage" + "pages/system/SchemePage", + "pages/net/TcpSocketPage" ] } diff --git a/base/src/main/ets/utils/Log.ets b/base/src/main/ets/utils/Log.ets index 3d15e4f..9e11f2f 100644 --- a/base/src/main/ets/utils/Log.ets +++ b/base/src/main/ets/utils/Log.ets @@ -3,7 +3,7 @@ import hilog from '@ohos.hilog'; let domain: number = 0xFF00; let prefix: string = 'HM4Demo'; -let format: string = `%{public}s, %{public}s`; +let format: string = `%{public}s`; export class Log {