1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
.equ AF_INET, 2
.equ SOCK_DGRAM, 2
.struct 0
sin_family: @ famille : AF_INET
.struct sin_family + 2
sin_port: @ le numéro de port
.struct sin_port + 2
sin_addr: @ l'adresse internet
.struct sin_addr + 4
sin_zero: @ un champ de 8 zéros
.struct sin_zero + 8
sin_fin:
.data
msg1: .asciz "Demarrage du serveur...\n"
sock: .word 0
sinsize: .word 0
sinServ: .skip sin_fin
sinCli: .skip sin_fin
.text
.global main
.extern printf
.extern socket
.extern connect
.extern recv
.extern close
.extern htons
.extern htonl
.extern bind
.extern listen
.extern accept
main:
push {ip,lr}
ldr r0,=msg1
bl printf
mov r0,#2;mov r1,#2;mov r2,#0
bl socket
ldr r1,=sock;str r0,[r1] @stockage socket
ldr r6,=sinServ @select sin
mov r0,#0
bl htonl
str r0,[r6,#sin_addr]
mov r0,#AF_INET;strh r0,[r6,#sin_family] @sin.sin_family = AF_INET;
mov r0,#80
bl htons
strh r0,[r6,#sin_port] @sin.sin_port = htons(80);
ldr r0,=sock;ldr r0,[r0]
mov r1,r6;add r1,#sin_family
mov r2,#sin_fin
bl bind
ldr r0,=sock;ldr r0,[r0]
mov r1,#0
bl listen
mov r5,#0
boucle:
ldr r0,=sinsize;mov r1,#16;str r1,[r0] @sinsize=16
@suite code
add r5,#1
mov r0,#3;cmp r0,r5;bne boucle
pop {ip,pc} |
Partager