TCP와 UDP를 같은 포트에 bind하려고 합니다.
Sona
perror함수를 사용해보니 이미 사용되고있는 주소라고 뜨네요(Address already in use)TCP와 UDP는 같은 포트에서 동시에 사용할 수 있다고 하는데 왜 바인드에러가 뜨는건지 ㄷㄷ
memset을 두개로 쪼개서 따로 넣어봤는데도 해결이 안되더라구요..
그냥 bind하면 안되는건가요? 여기저기 찾아봤는데 영 답이 안나와서 질문글 올려봅니다.
두 서버를 동시에 같은 포트에서 돌리는게 목적입니다.코드는 아래와 같습니다. error_handling 함수는 생략#include stdio.h
#include stdlib.h
#include string.h
#include unistd.h
#include arpa/inet.h
#include sys/socket.hvoid error_handling(char *message);int main(int argc, char *argv[])
{
pid_t pid;
int tcp_serv_sock,udp_serv_sock, clnt_sock;
int read_cnt,str_len,i;
struct sockaddr_in serv_adr, clnt_adr;
socklen_t clnt_adr_sz; if(argc2)
{
printf(Usage : %s IP\n, argv[0]);//세개 이상 입력했을 때 오류출력
exit(1);
} //주소정보
memset(&serv_adr, 0 ,sizeof(serv_adr));
serv_adr.sin_family=AF_INET;
serv_adr.sin_addr.s_addr=htonl(INADDR_ANY);
if(argc==1)
serv_adr.sin_port=htons(1234);//포트를 입력하지 않았을 때
else if(argc==2)
serv_adr.sin_port=htons(atoi(argv[1]));//포트를 입력했을 때 pid=fork();
if(pid=0) //Parent Process. UDP
{
udp_serv_sock=socket(PF_INET, SOCK_DGRAM, 0); //소켓생성
if(udp_serv_sock ==-1)
error_handling(UDP socket creation error); if(bind(udp_serv_sock, (struct sockaddr*)&serv_adr, sizeof(serv_adr))==-1)
error_handling(bind() error);
}
else //Child process. TCP
{
fp=fopen(FILENAME,rb);
tcp_serv_sock=socket(PF_INET, SOCK_STREAM, 0); //소켓생성
if(bind(tcp_serv_sock, (struct sockaddr*)&serv_adr, sizeof(serv_adr))==-1)
perror(bind() error);
}
return 0;
}
-
Creator
소켓옵션 설정하는걸로 해결했습니다.
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2658305 | strcpy와 포인터 그리고 메모리 할당에 대한 질문 입니다./ (3) | 나라우람 | 2024-06-14 |
2658274 | 포인터 문자열 역으로 출력?ㅠ | 어서와 | 2024-06-14 |
2658192 | C언어기초3문제 (3) | 해샘찬 | 2024-06-13 |
2658165 | 로또게임질문 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ | 내꽃 | 2024-06-13 |
2658136 | 구조체 부분에서 막혔습니다.. (3) | 난슬 | 2024-06-13 |
2658106 | c언어 간단한 질문입니다 (4) | 아잉누님 | 2024-06-13 |
2658077 | security가 붙은 함수 관련 질문 | 횃대비 | 2024-06-12 |
2658050 | 기초 c언어 프로그램 짜는데 어려워서 글올려요 | 꺆잉 | 2024-06-12 |
2658021 | #define 문 정말 간단한 질문있습니다. | 심플포텐 | 2024-06-12 |
2657962 | IPv6에서 RAS 사용요 | 상1큼한렩 | 2024-06-11 |
2657935 | 도와주세요 배열및 함수관련. (4) | 하루키 | 2024-06-11 |
2657885 | 두개의 소문자입력뒤 비트연산자로 대문자오바꾸기 | 풀잎 | 2024-06-11 |
2657830 | 경우의 수 구하기.. (1) | 흰우유 | 2024-06-10 |
2657806 | 연산자 질문요 (1) | 네코 | 2024-06-10 |
2657782 | 콘솔창 꽉채우기 | 미쁘다 | 2024-06-10 |
2657754 | 유니코드 기반으로 문자 입출력받는데 안됩니다 | 어리버리 | 2024-06-09 |
2657728 | 포인터 배열도 동적할당(malloc)를 통해서 생성이 가능한가요? | 우미 | 2024-06-09 |
2657700 | 오류 해석을 못하겠어요. | 해길 | 2024-06-09 |
2657642 | 출력부분에서.. | 앨버트 | 2024-06-08 |
2657620 | 파일 입출력 함수 반복문 .. | 서리서리 | 2024-06-08 |