Hi,
ich habe mal wieder ein Problem mit UDP,
und zwar wenn der Client eine Nachricht sendet,
bekommt der Server sie auch und rechnet sie aus, aber sendet sie anscheinend nicht zurück.
Woran kann das liegen?
Client:
BlitzBasic: [AUSKLAPPEN] [EINKLAPPEN] Send_Char_MSG("GetChatHistory",Char_Stream,udp_char_ip,udp_char_port) DebugLog UDPMsgPort(Char_Stream) Repeat recv=RecvUDPMsg(Char_Stream) If recv<>0 Then Exit Forever DebugLog"Chat Stream recived." If tmp_id=1 Then msg$=ReadString(Char_Stream) ElseIf tmp_id=2 Then ReadString(Char_Stream) msg$=ReadString(Char_Stream) ElseIf tmp_id=3 Then ReadString(Char_Stream) ReadString(Char_Stream) msg$=ReadString(Char_Stream) ElseIf tmp_id=4 Then ReadString(Char_Stream) ReadString(Char_Stream) ReadString(Char_Stream) msg$=ReadString(Char_Stream) ElseIf tmp_id=5 Then ReadString(Char_Stream) ReadString(Char_Stream) ReadString(Char_Stream) ReadString(Char_Stream) msg$=ReadString(Char_Stream) EndIf
Zum ausprobieren habe ich den Teil wo es gesendet wird, in eine extra Exe gepackt und parallel zu dem Server laufen.
Server (Eingang)
BlitzBasic: [AUSKLAPPEN] [EINKLAPPEN] udp_read=RecvUDPMsg(instrm) If udp_read<>0 Then client_speed=ReadAvail(instrm) If client_speed=0 Then Exit client_char$=ReadLine(instrm) ReadLine(instrm) ReadLine(instrm) ReadLine(instrm) ReadLine(instrm) ReadLine(instrm) ReadLine(instrm) ReadLine(instrm) ReadLine(instrm) ReadLine(instrm) ElseIf Left(client_message$,4)="CHAT" Then Chat_Message$=Right(client_message$,Len(client_message)-5) chat_db_file=WriteFile(db+"SVR_CHATLOG\"+client_char$+".inf") WriteLine chat_db_file,Chat_Message$ CloseFile(chat_db_file) Glob_ChatLine1$=Glob_ChatLine2$ Glob_ChatLine2$=Glob_ChatLine3$ Glob_ChatLine3$=Glob_ChatLine4$ Glob_ChatLine4$=Glob_ChatLine5$ Glob_ChatLine5$=client_char$+": "+Chat_Message$ Print"[CHAT] "+Glob_ChatLine5$ ElseIf client_message$="GetChatHistory" Then Print"[CHAT HIS] Client requested." out=WriteFile("tmp_csv") WriteLine out,Glob_ChatLine1$ WriteLine out,Glob_ChatLine2$ WriteLine out,Glob_ChatLine3$ WriteLine out,Glob_ChatLine4$ WriteLine out,Glob_ChatLine5$ WriteLine out,client_ip$ WriteLine out,client_port$ CloseFile(out) Repeat If FileType("tmp_csv")<>1 Then Exit Forever
Server (Ausgang)
BlitzBasic: [AUSKLAPPEN] [EINKLAPPEN] Repeat in=ReadFile("tmp_csv") If in<>0 Then Exit Forever Print"Server answer recived for client..." Chat1$=ReadLine(in) Chat2$=ReadLine(in) Chat3$=ReadLine(in) Chat4$=ReadLine(in) Chat5$=ReadLine(in) C_IP$=ReadLine(in) C_Port$=ReadLine(in) Print C_IP$+":"+C_Port$ CloseFile(in) DeleteFile("tmp_csv") WriteString udp,Chat1$ WriteString udp,Chat2$ WriteString udp,Chat3$ WriteString udp,Chat4$ WriteString udp,Chat5$ SendUDPMsg udp,C_IP$,C_Port$
IP und Port bekommt der Ausgangs-Server, aber will es anscheinend nicht weiterleiten.
Gruß Toasty
|