Добавил:
Novilit
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные по работе с linux / 2 / Client
.c#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<string.h>
#include<stdio.h>
#include<pthread.h>
#define MAXLEN 50
#define PORTNUM 2222
void *sendcon(void* pdest)
{
int sock;
char *buf="con";
while(1)
{
sleep(10);
sock=myconnect( (struct sockaddr*)pdest);
send(sock, buf, strlen(buf)+1, 0);
/**/printf("client send prove \"con\"\n");
}
}
int myconnect (struct sockaddr* pdest)
{
int mysocket=socket(AF_INET, SOCK_STREAM, 0);
connect(mysocket, pdest, sizeof(struct sockaddr));
/**/printf("client success connecting, sock = %d\n", mysocket);
return mysocket;
}
int main (void)
{
char buf[MAXLEN+1];
int mysocket, len;
pthread_t thr;
struct sockaddr_in dest;
memset (&dest, 0, sizeof(dest));
dest.sin_family=AF_INET;
dest.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
dest.sin_port= htons(PORTNUM);
/**/printf("client begin\n");
mysocket=myconnect((struct sockaddr*)&dest);
pthread_create(&thr, NULL, sendcon, (void *)&dest);
scanf("%50s", buf);
while (strcmp(buf, "exit")!=0)
{
/**/printf("client string %s entered, sock = %d\n", buf, mysocket);
send(mysocket, buf, strlen(buf)+1, 0);
/**/printf("client message sent\n");
len=recv(mysocket, buf, MAXLEN, 0);
/**/printf("client message recieved, %d\n", len);
/**/printf("client %s\n", buf);
scanf("%50s", buf);
mysocket=myconnect((struct sockaddr*)&dest);
}
close(mysocket);
pthread_cancel(thr);
/**/printf("client exit\n");
getchar();
return 0;
}