#ifndef _HEAD_SOCKET_H
#define _HEAD_SOCKET_H
#include <stdio.h> /* io */
#include <sys/types.h> /* See NOTES */
#include <sys/socket.h> /* socket */
#include <strings.h> /* bzero */
#include <stdbool.h> /* bool */
#include <string.h> /* strlen */
#include <netinet/in.h>
#include <arpa/inet.h> /* struct sockaddr_in */
#include <stdlib.h> /* exit */
#include <unistd.h> /* read */
#define SIZE 100
// typedef unsigned int UINT;
// typedef unsigned char UCHAR;
// typedef unsigned char USHOET;
bool JUDEG = true;
#endif
#include "head_socket.h"
/* ./Jack <Address> <Rose.PORT> :(./Jack 192.168.1.73 50001) */
int main(int argc, char const *argv[])
{
if(argc != 3)
{
printf("Usage: %s <PORT>\n", argv[0]);
exit(0);
}
/* Create socket:| AF_INET: ipv4 SOCK_STREAM: stream socket */
int fd = socket(AF_INET, SOCK_STREAM, 0);
/* connect Rose */
/* IPV4 Address struct */
struct sockaddr_in srvaddr, cliaddr;
socklen_t len = sizeof(srvaddr);
bzero(&srvaddr, len);
srvaddr.sin_family = AF_INET;
inet_pton(AF_INET, argv[1], &srvaddr.sin_addr);
srvaddr.sin_port = htons(atoi(argv[2]));/* host to network short */
connect(fd, (struct sockaddr *)&srvaddr, len);
/* store data */
char buf[SIZE];
/* read data constant */
while(JUDEG)
{
/* empty buf */
bzero(buf, SIZE);
/* input data */
if(fgets(buf, SIZE, stdin) ==NULL)
break;
if(strncmp(buf, "quit", 4) == 0)
{
fprintf(stdout,"Process exit!\n");
break;
}
/* send data (write data to fd) */
write(fd, buf, strlen(buf));
}
/* close socket */
close(fd);
/* exit */
return 0;
}
#include "head_socket.h"
/* ./Rose PORT : (./Rose 50001) */
int main(int argc, const char *argv[])
{
if(argc != 2)
{
printf("Usage: %s <PORT>\n", argv[0]);
exit(0);
}
/* Create socket:| AF_INET: ipv4 SOCK_STREAM: stream socket */
int fd = socket(AF_INET, SOCK_STREAM, 10);
/* Bind Address(IP:PORT) */
/* IPV4 Address struct */
struct sockaddr_in srvaddr, cliaddr;
socklen_t len = sizeof(srvaddr);
bzero(&srvaddr, len);
srvaddr.sin_family = AF_INET;
srvaddr.sin_port = htons(atoi(argv[1]));/* host to network short */
srvaddr.sin_addr.s_addr = htonl(INADDR_ANY);
// inet_pton(AF_INET, "192.168.1.73", &srvaddr.sin_addr);
bind(fd, (struct sockaddr *)&srvaddr, len);
/* Set listen socket */
listen(fd, 3);
/* wait client connect */
len = sizeof(cliaddr);
int connect_fd = accept(fd, (struct sockaddr *)&cliaddr, &len);
char peeraddr[50];
bzero(peeraddr, 50);
printf("new connection: %s:%hu\n",
inet_ntop(AF_INET, &cliaddr.sin_addr, peeraddr, 50),
cliaddr.sin_port);
/* store data */
char buf[SIZE];
/* read data constant */
while(JUDEG)
{
/* empty buf */
bzero(buf, SIZE);
if(read(connect_fd, buf, SIZE) == 0)
break;
if(strncmp(buf, "quit", 4) == 0)
{
fprintf(stdout,"Process exit!\n");
//printf("Process exit!\n");
break;
}
printf("from Jack: %s", buf);
}
/* close socket */
close(fd);
close(connect_fd);
/* exit */
return 0;
}