Как написать клиент-серверное приложение? - C (СИ)
Формулировка задачи:
Хочу написать такую программу. Есть сервер у меня на компютере и есть клиент на другом компютере. Клиент посылает какую-то строку серверу а сервер в ответ посылает другую строку. Я такое уже писал но клиент и сервер были на одном компютере.
клиент
Что тут поменять???
Вот мой код для клиента и сервера которые на одном компе
сервер
#include <winsock2.h> #include <stdio.h> int main(void) { WORD v=MAKEWORD(2,0); WSADATA d; int e=WSAStartup(v,&d); if (e) { perror("error initializing winsock"); return 1; } struct sockaddr_in local; int s; int s1; int rc; char buf[1]; local.sin_family=AF_INET; local.sin_port=htons(7500); local.sin_addr.s_addr=htonl(INADDR_ANY); s=socket(AF_INET,SOCK_STREAM,0); if (s<0) { perror("error calling socket"); return 1; } rc=bind(s,(struct sockaddr *)&local,sizeof(local)); if (rc<0) { perror("error calling bind"); return 1; } rc=listen(s,5); if (rc) { perror("error calling listen"); return 1; } s1=accept(s,NULL,NULL); if (s1<0) { perror("error calling accept"); return 1; } rc=recv(s1,buf,1,0); if (rc<=0) { perror("error calling recv"); return 1; } printf("%c\n",buf[0]); rc=send(s1,"2",1,0); if (rc<=0) perror("error calling send"); if (closesocket(s)) perror("error calling closesocket"); if (closesocket(s1)) perror("error calling closesocket"); WSACleanup(); return 0; }
#include <winsock2.h> #include <stdio.h> int main(void) { WORD v=MAKEWORD(2,0); WSADATA d; int e=WSAStartup(v,&d); if (e) { perror("error initializing winsock"); return 1; } struct sockaddr_in peer; int s; int rc; char buf[1]; peer.sin_family=AF_INET; peer.sin_port=htons(7500); peer.sin_addr.s_addr=inet_addr("127.0.0.1"); s=socket(AF_INET,SOCK_STREAM,0); if (s<0) { perror("error calling socket"); return 1; } rc=connect(s,(struct sockaddr *)&peer,sizeof(peer)); if (rc) { perror("error calling connect"); return 1; } rc=send(s,"1",1,0); if (rc<=0) { perror("error calling send"); return 1; } rc=recv(s,buf,1,0); if (recv<=0) perror("error calling recv"); else printf("%c\n",buf[0]); if (closesocket(s)) perror("error calling closesocket"); WSACleanup(); return 0; }
Ну хоть ктонибудь ответте.
Решение задачи: «Как написать клиент-серверное приложение?»
textual
Листинг программы
peer.sin_addr.s_addr = inet_addr("127.0.0.1");
Объяснение кода листинга программы
- В данном коде происходит привязка сокета к адресу localhost (127.0.0.1).
Пояснение:
— peer.sin_addr.s_addr = inet_addr(
127.0.0.1
);: Здесь используется функция inet_addr для преобразования символьного адреса127.0.0.1
в числовое значение, которое затем присваивается полю s_addr структуры sockaddr_in, которая представляет собой структуру, используемую для хранения информации о сокете. — В результате, сокет будет привязан к адресу localhost (127.0.0.1), что означает, что он будет слушать входящие соединения только от этого адреса.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д