Сервер-клиент на сокетах: при отправке второго сообщения, программа падает - Free Pascal
Формулировка задачи:
Сервер:
Клиент:
Оба исходника успешно компилируются и запускаются, проблема том, что когда из под клиента отправляется второе сообщение, все падает. Как это исправить? И ещё... Этот сервер доступен абсолютно всем или только для клиента 127.0.0.1?
uses Sockets, CRT; var Fromname: array[1..255] of char; Buffer,oldbuff,buff,UN: string; S:Longint; Sin,Sout:text; Saddr:TInetSockAddr; function error(s:string):boolean; begin writeln(s,SocketError); end; function ReadM():string; begin reset(sin); read(sin,ReadM); close(sin); end; function log(t:string):boolean; begin writeln(t); end; begin S:=fpSocket(AF_INET, SOCK_STREAM,0); if SocketError<>0 then error('fpSocket:'); SAddr.sin_family:=AF_INET; SAddr.port:=htons(5000); SAddr.sin_addr.s_addr:=HostToNet((127 shl 24) or 1); if fpBind(S,@SAddr, sizeof(saddr))=-1 then error('fpBind:') else writeln('Binding...'); if fpListen(S,1)=-1 then error('fpListen:') else Writeln('Waiting for client...'); if not Accept(S,SAddr, Sin, Sout) then error('fpAccept:'); repeat buffer:=readm(); if (buffer<>oldbuff) and (buffer<>'') then begin writeln(buffer); oldbuff:=buffer; end; until buffer<>'exit'; end.
uses Sockets,crt; procedure Perror(const S:string); begin writeln(S,SocketError); halt(100); end; var Saddr:TinetSockAddr; Buffer,Buff,oldBuff,UN:string[255]; S:Longint; Sin,Sout:text; function SendM(mess:string):boolean; begin rewrite(sout); writeln(sout,mess); close(sout); end; function log(t:string):boolean; begin writeln(t); end; begin S:=fpSocket(AF_INET,SOCK_STREAM,0); if s=-1 then Perror('Client:Socket: '); SAddr.sin_family:=AF_INET; SAddr.sin_port:=htons(5000); Saddr.sin_addr.s_addr:=HostToNet((127 shl 24) or 1); if not Connect(S,Saddr,Sin,Sout) then PError('Client : Connect : '); repeat read(buff); SendM(buff); until buff<>'exit'; end.
Решение задачи: «Сервер-клиент на сокетах: при отправке второго сообщения, программа падает»
textual
Листинг программы
b:=@w[i];
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д