일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- sa 계정 비밀번호 변경
- UDP daytime
- 재밌는 모바일게임
- 오버워치
- Reverse Me
- 배열
- C언어
- 마인크래프트
- 암호화폐
- 덧셈
- 프론트엔드 개발자
- abex crack me 1번
- c언어 알고리즘
- 배열 탐색
- 구조체
- abex crack me 2번 문제풀이
- 네트워크 관리사 2급 필기
- 프로그래밍 언어론
- 레나 리버싱
- react native
- abex crack me 5번문제
- 리틀엔디언
- 리버싱
- 배열 정렬
- 빅엔디언
- 알고리즘
- 안드로이드 백도어
- 메이플스토리 M 사전예약
- 구조체 함수
- 1.9.2
- Today
- Total
Gyejoong's Information
클라이언트 공용코드(daytime,qotd,echo,finger) 본문
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
void err_quit(const char *message);
void err_sys(const char *message);
#define MAXLINE 4096
int main(int argc, char *argv[])
{
if(argc != 2)
err_quit("usage : ./(daytime,qotd,echo,finger)tcpcli <IPaddress>);
// 클라이언트의 소켓 생성
int sockfd;
if( (sockfd = socket(AF_INET,SOCK_STREAM,0)) < 0)
err_sys("socket error");
// 클라이언트의 포트번호 설정
struct sockaddr_in servaddr;
memset(&servaddr,0,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(7,13,17,79); // echo, daytime, qotd, finger 순서로 포트번호임.
// 클라이언트의 IP 설정 (argv[1] 번째에 올 IP를 설정해줌.)
int ret;
if( (ret = inet_pton(AF_INET,argv[1],&servaddr.sin_addr)) < 0)
err_sys("inet_pton error");
else if(!ret)
err_quit("<IPaddress> error : format string error");
// 클라이언트와 서버를 연결
if (connect(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr)) < 0)
err_sys("connect error");
}
void err_quit(const char *message)
{
fputs(message,stderr);
fputc('\n',stderr);
exit(1);
}
void err_sys(const char *message)
{
perror(message);
exit(1);
}
'Study > Socket programming' 카테고리의 다른 글
서버 공용코드 (daytime,qotd,echo,finger) (0) | 2016.09.30 |
---|---|
TCP IP 소켓프로그래밍 소스코드(daytime,qotd,echo,finger) (0) | 2016.09.28 |
Socket Programming 정리 (0) | 2016.09.28 |