Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 5859 → Rev 5858

/programs/network/tcpserv/tcpserv.asm
1,6 → 1,6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;
;; Copyright (C) KolibriOS team 2010-2015. All rights reserved. ;;
;; Copyright (C) KolibriOS team 2010-2013. All rights reserved. ;;
;; Distributed under terms of the GNU General Public License ;;
;; ;;
;; tcpserv.asm - TCP demo program for KolibriOS ;;
43,22 → 43,29
jnz exit
 
; initialize console
invoke con_start, 1
invoke con_init, 80, 25, 80, 25, title
push 1
call [con_start]
push title
push 25
push 80
push 25
push 80
call [con_init]
 
mcall 40, EVM_STACK
mcall 40, 1 shl 7 ; we only want network events
 
invoke con_write_asciiz, str1
push str1
call [con_write_asciiz]
 
mcall socket, AF_INET4, SOCK_STREAM, 0
cmp eax, -1
je sock_err
 
mov [socketnum], eax
 
; This socket option is not implemented in kernel yet.
; mcall setsockopt, [socketnum], SOL_SOCKET, SO_REUSEADDR, &yes,
; cmp eax, -1
; je opt_err
;; mcall setsockopt, [socketnum], SOL_SOCKET, SO_REUSEADDR, &yes,
;; cmp eax, -1
;; je opt_err
 
mcall bind, [socketnum], sockaddr1, sockaddr1.length
cmp eax, -1
68,13 → 75,19
cmp eax, -1
je listen_err
 
invoke con_write_asciiz, str2
push str2
call [con_write_asciiz]
 
mcall 10
 
mcall accept, [socketnum], sockaddr1, sockaddr1.length
cmp eax, -1
je acpt_err
 
mov [socketnum2], eax
 
;; mcall close, [socketnum]
 
mcall send, [socketnum2], hello, hello.length
 
.loop:
83,50 → 96,50
je .loop
 
mov byte[buffer+eax], 0
invoke con_write_asciiz, buffer
 
push buffer
call [con_write_asciiz]
 
jmp .loop
 
acpt_err:
invoke con_write_asciiz, str8
push str8
call [con_write_asciiz]
jmp done
 
listen_err:
invoke con_write_asciiz, str3
push str3
call [con_write_asciiz]
jmp done
 
bind_err:
invoke con_write_asciiz, str4
push str4
call [con_write_asciiz]
jmp done
 
sock_err:
invoke con_write_asciiz, str6
push str6
call [con_write_asciiz]
jmp done
 
done:
invoke con_getch2 ; Wait for user input
invoke con_exit, 1
call [con_getch2]
push 1
call [con_exit]
exit:
cmp [socketnum], 0
je @f
mcall close, [socketnum]
@@:
cmp [socketnum2], 0
je @f
mcall close, [socketnum2]
@@:
mcall -1
 
 
 
; data
title db 'TCP stream server demo',0
title db 'TCP stream server - test',0
str1 db 'Opening socket',10, 0
str2 db 'Listening for incoming connections...',10,0
str3 db 'Listen error',10,10,0
str4 db 'Bind error',10,10,0
str5 db 'Setsockopt error',10,10,0
str5 db 'Setsockopt error.',10,10,0
str6 db 'Could not open socket',10,10,0
str7 db 'Got data',10,10,0
str7 db 'Got data!',10,10,0
str8 db 'Error accepting connection',10,10,0
 
hello db 'Hello world!',0
134,7 → 147,7
 
sockaddr1:
dw AF_INET4
.port dw 23 shl 8 ; port 23 - network byte order
.port dw 0x1700 ; 23
.ip dd 0
rb 10
.length = $ - sockaddr1
157,8 → 170,8
con_set_cursor_pos, 'con_set_cursor_pos'
i_end:
 
socketnum dd 0
socketnum2 dd 0
socketnum dd ?
socketnum2 dd ?
buffer rb BUFFERSIZE
.length = BUFFERSIZE