![]()
Заглавная страница
Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Tcp 0 0 localhost:30013 localhost:58717 ESTABLISHED 2959/tcpserverСтр 1 из 2Следующая ⇒
Лабораторная работа №7 Оглавление 1.2. 1 2.1. 6 2.3. 12 3.3. 16 Вопросы.. 18
1.2 /* udpserver.c */ #include <sys/socket.h>
#include <sys/types.h>
#include <stdio.h>
#include <netinet/in.h>
#include <sys/stat.h>
#include <unistd.h> #include <arpa/inet.h>
#define SERV_PORT 20001
#define BUFSIZE 1024
#define SADDR struct sockaddr
#define SLEN sizeof(struct sockaddr_in)
int main() {
int sockfd, n, len;
char mesg[BUFSIZE], ipadr[16];
struct sockaddr_in servaddr;
struct sockaddr_in cliaddr;
if ((sockfd=socket(AF_INET, SOCK_DGRAM, 0))<0)
{perror("socket problem"); exit(1);}
memset(&servaddr, 0, SLEN);
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(SERV_PORT);
if (bind(sockfd, (SADDR *) &servaddr, SLEN)<0)
{perror("bind problem"); exit(1);}
printf("SERVER starts...\n");
for (;;) {
len = SLEN;
if ((n = recvfrom(sockfd, mesg, BUFSIZE, 0, (SADDR *)&cliaddr, &len)) < 0)
{perror("recvfrom"); exit(1);}
mesg[n] = 0;
printf("REQUEST %s FROM %s : %d\n", mesg, inet_ntop(AF_INET, (void *)&cliaddr.sin_addr.s_addr, ipadr,16), ntohs(cliaddr.sin_port));
sleep(10);
if (sendto(sockfd, mesg, n, 0, (SADDR *)&cliaddr, len) < 0)
{perror("sendto"); exit(1);}
}
}
/* udpclient.c */ #include <sys/socket.h>
#include <sys/types.h>
#include <stdio.h>
#include <netinet/in.h>
#include <sys/stat.h>
#include <unistd.h>
#define SERV_PORT 20001
#define BUFSIZE 1024
#define SADDR struct sockaddr
#define SLEN sizeof(struct sockaddr_in)
int main(int argc, char **argv) {
int sockfd, n;
char sendline[BUFSIZE], recvline[BUFSIZE + 1];
struct sockaddr_in servaddr;
struct sockaddr_in cliaddr;
if (argc != 2) {printf("usage: client <IPaddress of server>\n"); exit(1);}
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(SERV_PORT);
if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr)<0)
{perror("inet_pton problem"); exit(1);}
if ((sockfd=socket(AF_INET, SOCK_DGRAM, 0))<0) {perror("socket problem"); exit(1);}
write(1,"Enter string\n", 13);
while ((n=read(0, sendline, BUFSIZE)) > 0) {
if (sendto(sockfd, sendline, n, 0, (SADDR *)&servaddr, SLEN) == -1)
{perror("sendto problem"); exit(1);}
if (recvfrom(sockfd, recvline, BUFSIZE, 0, NULL, NULL) == -1)
{perror("recvfrom problem"); exit(1);}
printf("REPLY FROM SERVER= %s\n", recvline);
}
close(sockfd);
}
2.1
/* tcpserver.c */ #include <sys/socket.h>
#include <sys/types.h>
#include <stdio.h>
#include <netinet/in.h>
#define SERV_PORT 30013
#define BUFSIZE 100
#define SADDR struct sockaddr
#define SIZE sizeof(struct sockaddr_in)
int main() {
int lfd, cfd;
int nread, clilen;
char buf[BUFSIZE];
struct sockaddr_in servaddr;
struct sockaddr_in cliaddr;
if ((lfd = socket(AF_INET, SOCK_STREAM, 0))<0)
{perror("socket"); exit(1);}
memset(&servaddr, 0, SIZE);
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(SERV_PORT);
if (bind(lfd, (SADDR *) &servaddr, SIZE)<0)
{perror("bind"); exit(1);}
if (listen(lfd, 5) < 0) {perror("listen"); exit(1);}
for(;;){
clilen =SIZE;
if ((cfd = accept(lfd, (SADDR *)&cliaddr, &clilen)) < 0)
{perror("accept"); exit(1);}
printf("connection established\n");
while ((nread = read(cfd, buf, BUFSIZE))> 0)
write(1, &buf, nread);
if (nread == -1){perror("read"); exit(1);}
close(cfd);
}
}
/* tcpclient.c */ #include <sys/socket.h>
#include <sys/types.h>
#include <stdio.h>
#include <netinet/in.h>
#define BUFSIZE 100
#define SADDR struct sockaddr
#define SIZE sizeof(struct sockaddr_in)
int main(int argc, char *argv[]){
int fd;
int nread;
char buf[BUFSIZE];
struct sockaddr_in servaddr;
if (argc < 3) {printf("Too few arguments \n"); exit(1);}
if ((fd = socket(AF_INET, SOCK_STREAM, 0))<0)
{perror("socket creating"); exit(1);}
memset(&servaddr, 0, SIZE);
servaddr.sin_family = AF_INET;
if(inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0)
{perror("bad address"); exit(1);}
servaddr.sin_port = htons(atoi(argv[2]));
if (connect(fd, (SADDR *)&servaddr, SIZE)<0)
{perror("connect"); exit(1);}
write(1, "Input message to send\n", 22);
while ((nread = read(0, buf, BUFSIZE)) > 0)
if (write(fd, buf, nread)<0)
{perror("write"); exit(1);}
close(fd);
exit(0);
}
vadim@vadim-VirtualBox:~$ netstat -a -p (Не все процессы были идентифицированы, информация о процессах без владельца не будет отображена, вам нужны права суперпользователя (root), чтобы увидеть всю информацию.) Активные соединения с интернетом (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 vadim-VirtualBox:domain *:* LISTEN - tcp 0 0 localhost:ipp *:* LISTEN - tcp 0 0 *:30013 *:* LISTEN 2959/tcpserver Tcp 0 0 localhost:30013 localhost:58717 ESTABLISHED 2959/tcpserver Tcp 0 0 localhost:58717 localhost:30013 ESTABLISHED 2960/tcpclient Tcp 2 0 localhost:30013 localhost:58718 ESTABLISHED - Tcp 0 0 localhost:58718 localhost:30013 ESTABLISHED 3070/tcpclient tcp6 0 0 ip6-localhost:ipp [::]:* LISTEN - tcp6 1 0 ip6-localhost:34759 ip6-localhost:ipp CLOSE_WAIT - udp 0 0 *:mdns *:* - udp 0 0 *:52615 *:* - udp 0 0 *:36516 *:* - udp 0 0 vadim-VirtualBox:domain *:* - udp 0 0 *:bootpc *:* - udp 0 0 *:ipp *:* - udp6 0 0 [::]:35869 [::]:* - udp6 0 0 [::]:mdns [::]:* - udp6 0 0 [::]:52883 [::]:* - Активные сокеты домена UNIX (servers and established) Proto RefCnt Flags Type State I-Node PID/Program name Путь unix 2 [ ACC ] STREAM LISTENING 12130 1463/gnome-session @/tmp/.ICE-unix/1463 unix 2 [ ACC ] STREAM LISTENING 11255 - @/tmp/.X11-unix/X0 unix 2 [ ACC ] STREAM LISTENING 12850 1555/pulseaudio /run/user/1000/pulse/native unix 2 [ ACC ] STREAM LISTENING 14131 - /var/run/cups/cups.sock
2.3 /* tcpserver.c */ #include <sys/socket.h>
#include <sys/types.h>
#include <stdio.h>
#include <netinet/in.h> #include <arpa/inet.h>
#define SERV_PORT 30013
#define BUFSIZE 100
#define SADDR struct sockaddr
#define SIZE sizeof(struct sockaddr_in)
int main() {
int lfd, cfd;
int nread, clilen;
char buf[BUFSIZE], ipadr[16];
struct sockaddr_in servaddr;
struct sockaddr_in cliaddr;
if ((lfd = socket(AF_INET, SOCK_STREAM, 0))<0)
{perror("socket"); exit(1);}
memset(&servaddr, 0, SIZE);
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(SERV_PORT);
if (bind(lfd, (SADDR *) &servaddr, SIZE)<0)
{perror("bind"); exit(1);}
if (listen(lfd, 5) < 0) {perror("listen"); exit(1);}
for(;;){
clilen =SIZE;
if ((cfd = accept(lfd, (SADDR *)&cliaddr, &clilen)) < 0)
{perror("accept"); exit(1);}
printf("connection established\n");
while ((nread = read(cfd, buf, BUFSIZE))> 0) { sleep(1); printf("%s : %d\n", inet_ntop(AF_INET, (void *)&cliaddr.sin_addr.s_addr, ipadr,16), ntohs(cliaddr.sin_port));
write(1, &buf, nread); }
if (nread == -1){perror("read"); exit(1);}
close(cfd);
}
}
/* tcpclient.c */ #include <sys/socket.h>
#include <sys/types.h>
#include <stdio.h>
#include <netinet/in.h>
#define BUFSIZE 100
#define SADDR struct sockaddr
#define SIZE sizeof(struct sockaddr_in)
int main(int argc, char *argv[]){
int fd;
int nread;
char buf[BUFSIZE];
struct sockaddr_in servaddr;
if (argc < 3) {printf("Too few arguments \n"); exit(1);}
if ((fd = socket(AF_INET, SOCK_STREAM, 0))<0)
{perror("socket creating"); exit(1);}
memset(&servaddr, 0, SIZE);
servaddr.sin_family = AF_INET;
if(inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0)
{perror("bad address"); exit(1);}
servaddr.sin_port = htons(atoi(argv[2]));
if (connect(fd, (SADDR *)&servaddr, SIZE)<0)
{perror("connect"); exit(1);}
write(1, "Input message to send\n", 22);
while ((nread = read(0, buf, BUFSIZE)) > 0)
if (write(fd, buf, nread)<0)
{perror("write"); exit(1);}
close(fd);
exit(0);
}
3.3
/* tcpserver.c */ #include <sys/socket.h> #include <sys/types.h> #include <stdio.h> #include <netinet/in.h>
#define SERV_PORT 30016 #define BUFSIZE 100 #define SADDR struct sockaddr #define SIZE sizeof(struct sockaddr_in)
int main() { int lfd, cfd; int nread, clilen; char buf[BUFSIZE]; struct sockaddr_in servaddr; struct sockaddr_in cliaddr;
if ((lfd = socket(AF_INET, SOCK_STREAM, 0))<0) {perror("socket"); exit(1);}
memset(&servaddr, 0, SIZE); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(SERV_PORT);
if (bind(lfd, (SADDR *) &servaddr, SIZE)<0) {perror("bind"); exit(1);}
if (listen(lfd, 5) < 0) {perror("listen"); exit(1);}
for(;;){ clilen =SIZE;
if ((cfd = accept(lfd, (SADDR *)&cliaddr, &clilen)) < 0) {perror("accept"); exit(1);}
if (fork()==0) { printf("connection established\n");
while ((nread = read(cfd, buf, BUFSIZE))> 0) write(1, &buf, nread); if (nread == -1){perror("read"); exit(1);} printf("client gone\n"); close(cfd);
return 0; } } } Вопросы Со́кеты — название программного интерфейса для обеспечения обмена данными между процессами. Процессы при таком обмене могут исполняться как на одной ЭВМ, так и на различных ЭВМ, связанных между собой сетью. Сокет — абстрактный объект, представляющий конечную точку соединения. Это структура данных, используемая как оконечная точка взаимодействия для IPC. Сокет является развитием механизма каналов. Лабораторная работа №7 Оглавление 1.2. 1 2.1. 6 2.3. 12 3.3. 16 Вопросы.. 18
1.2 /* udpserver.c */ #include <sys/socket.h>
#include <sys/types.h>
#include <stdio.h>
#include <netinet/in.h>
#include <sys/stat.h>
#include <unistd.h> #include <arpa/inet.h>
#define SERV_PORT 20001
#define BUFSIZE 1024
#define SADDR struct sockaddr
#define SLEN sizeof(struct sockaddr_in)
int main() {
int sockfd, n, len;
char mesg[BUFSIZE], ipadr[16];
struct sockaddr_in servaddr;
struct sockaddr_in cliaddr;
if ((sockfd=socket(AF_INET, SOCK_DGRAM, 0))<0)
{perror("socket problem"); exit(1);}
memset(&servaddr, 0, SLEN);
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(SERV_PORT);
if (bind(sockfd, (SADDR *) &servaddr, SLEN)<0)
{perror("bind problem"); exit(1);}
printf("SERVER starts...\n");
for (;;) {
len = SLEN;
if ((n = recvfrom(sockfd, mesg, BUFSIZE, 0, (SADDR *)&cliaddr, &len)) < 0)
{perror("recvfrom"); exit(1);}
mesg[n] = 0;
printf("REQUEST %s FROM %s : %d\n", mesg, inet_ntop(AF_INET, (void *)&cliaddr.sin_addr.s_addr, ipadr,16), ntohs(cliaddr.sin_port));
sleep(10);
if (sendto(sockfd, mesg, n, 0, (SADDR *)&cliaddr, len) < 0)
{perror("sendto"); exit(1);}
}
}
/* udpclient.c */ #include <sys/socket.h>
#include <sys/types.h>
#include <stdio.h>
#include <netinet/in.h>
#include <sys/stat.h>
#include <unistd.h>
#define SERV_PORT 20001
#define BUFSIZE 1024
#define SADDR struct sockaddr
#define SLEN sizeof(struct sockaddr_in)
int main(int argc, char **argv) {
int sockfd, n;
char sendline[BUFSIZE], recvline[BUFSIZE + 1];
struct sockaddr_in servaddr;
struct sockaddr_in cliaddr;
if (argc != 2) {printf("usage: client <IPaddress of server>\n"); exit(1);}
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(SERV_PORT);
if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr)<0)
{perror("inet_pton problem"); exit(1);}
if ((sockfd=socket(AF_INET, SOCK_DGRAM, 0))<0) {perror("socket problem"); exit(1);}
write(1,"Enter string\n", 13);
while ((n=read(0, sendline, BUFSIZE)) > 0) {
if (sendto(sockfd, sendline, n, 0, (SADDR *)&servaddr, SLEN) == -1)
{perror("sendto problem"); exit(1);}
if (recvfrom(sockfd, recvline, BUFSIZE, 0, NULL, NULL) == -1)
{perror("recvfrom problem"); exit(1);}
printf("REPLY FROM SERVER= %s\n", recvline);
}
close(sockfd);
}
2.1
/* tcpserver.c */ #include <sys/socket.h>
#include <sys/types.h>
#include <stdio.h>
#include <netinet/in.h>
#define SERV_PORT 30013
#define BUFSIZE 100
#define SADDR struct sockaddr
#define SIZE sizeof(struct sockaddr_in)
int main() {
int lfd, cfd;
int nread, clilen;
char buf[BUFSIZE];
struct sockaddr_in servaddr;
struct sockaddr_in cliaddr;
if ((lfd = socket(AF_INET, SOCK_STREAM, 0))<0)
{perror("socket"); exit(1);}
memset(&servaddr, 0, SIZE);
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(SERV_PORT);
if (bind(lfd, (SADDR *) &servaddr, SIZE)<0)
{perror("bind"); exit(1);}
if (listen(lfd, 5) < 0) {perror("listen"); exit(1);}
for(;;){
clilen =SIZE;
if ((cfd = accept(lfd, (SADDR *)&cliaddr, &clilen)) < 0)
{perror("accept"); exit(1);}
printf("connection established\n");
while ((nread = read(cfd, buf, BUFSIZE))> 0)
write(1, &buf, nread);
if (nread == -1){perror("read"); exit(1);}
close(cfd);
}
}
/* tcpclient.c */ #include <sys/socket.h>
#include <sys/types.h>
#include <stdio.h>
#include <netinet/in.h>
#define BUFSIZE 100
#define SADDR struct sockaddr
#define SIZE sizeof(struct sockaddr_in)
int main(int argc, char *argv[]){
int fd;
int nread;
char buf[BUFSIZE];
struct sockaddr_in servaddr;
if (argc < 3) {printf("Too few arguments \n"); exit(1);}
if ((fd = socket(AF_INET, SOCK_STREAM, 0))<0)
{perror("socket creating"); exit(1);}
memset(&servaddr, 0, SIZE);
servaddr.sin_family = AF_INET;
if(inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0)
{perror("bad address"); exit(1);}
servaddr.sin_port = htons(atoi(argv[2]));
if (connect(fd, (SADDR *)&servaddr, SIZE)<0)
{perror("connect"); exit(1);}
write(1, "Input message to send\n", 22);
while ((nread = read(0, buf, BUFSIZE)) > 0)
if (write(fd, buf, nread)<0)
{perror("write"); exit(1);}
close(fd);
exit(0);
}
vadim@vadim-VirtualBox:~$ netstat -a -p (Не все процессы были идентифицированы, информация о процессах без владельца не будет отображена, вам нужны права суперпользователя (root), чтобы увидеть всю информацию.) Активные соединения с интернетом (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 vadim-VirtualBox:domain *:* LISTEN - tcp 0 0 localhost:ipp *:* LISTEN - tcp 0 0 *:30013 *:* LISTEN 2959/tcpserver tcp 0 0 localhost:30013 localhost:58717 ESTABLISHED 2959/tcpserver |
||
Последнее изменение этой страницы: 2016-04-26; Нарушение авторского права страницы infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.221.159.255 (0.085 с.) |