C에서 서버 - 클라이언트 소켓 프로그램을 작성하려고했습니다. 타이머를 사용하여 달성하는 방법에 관한 질문이 있습니다. 내가 뭘 하려는지 서버와 클라이언트 사이의 연결을 설정하고 읽기 - 쓰기 작업이 있습니다. 나는 'timeval'구조체를 사용하여 서버 측에서 select()를 사용하는 것에 관해 알게되었습니다. 하지만 내가 고정 된 시간 동안 소켓에서 읽을 수있는 클라이언트 측에서해야 할 일은 무엇인가?클라이언트 소켓 프로그램에서 select() 사용
답변
시스템 호출 timeval
의 select()
구조에서 원하는 시간 제한을 설정하여 클라이언트에서 똑같은 작업을 수행 할 수 있습니다. 그러나 클라이언트에서는 블로킹 모드를 사용하고 SO_TIMEOUT/SO_RCVTIMEO
옵션을 사용하여 setsockopt()
옵션을 사용하는 것이 더 쉽습니다.이 옵션은 플랫폼에서 호출되는 모든 시간 제한을 제어하는 데 사용됩니다. 해당 페이지 페이지를 확인하십시오. 당신이 "setsockopt를"와 소켓에 대한 간단한 예를 원하는 경우
예 정확한 :
int mySocket;
struct timeval tv = {0, 0}; // Init to 0 (Or set directly with your values)
mySocket = socket(AF_INET, SOCK_STREAM, 0);
// Set the timeout (If you don't have set directly values)
tv.tv_sec = 10;
tv.tv_usec = 0;
// Set The Timeout On Socket RECV
setsockopt(mySocket, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv, sizeof(struct timeval));
// Set The Timeout On Socket SEND
setsockopt(mySocket, SOL_SOCKET, SO_SNDTIMEO, (char *)&tv, sizeof(struct timeval));
// 샘플 클라이언트 코드 time_out.tv_sec = 15; // 15 초 time_out.tv_usec = 0; // 0 밀리 초 sockfd = 소켓 (AF_INET, SOCK_STREAM, 0); n = connect (sockfd, (struct sockaddr *) 및 serv_addr, sizeof (serv_addr)); fgets (buffer, 255, stdin); n = 쓰기 (sockfd, buffer, strlen (buffer)); n = 읽기 (sockfd, buffer, 255); 위의 예제 코드는 무엇을하려고하는지입니다. 소켓 'sockfd'의 서버에 연결하고 먼저 쓰기 작업을 수행 한 다음 읽기 작업을 수행하십시오. read()는 15 초를 기다린 다음 시간 초과하지만 기다리지 않아야합니다. 도움이 필요하다! – Richard
좋아, 쓰기/쓰기 기능을 사용하지 말아라. 나는 생각한다! http://linux.die.net/man/2/send http://linux.die.net/man/2/recv – AnyProblemHaveSolution
- 1. Select()가 클라이언트 측에서 나오지 않습니다.
- 2. 좋은 클라이언트 소켓 풀
- 3. 클라이언트 (소켓)의 소켓 수신자
- 4. 클라이언트 서버 소켓 프로그래밍
- 5. .NET의 UDP 소켓 클라이언트
- 6. Select with nonblocking 소켓
- 7. 클라이언트 소켓 읽기 "동결"
- 8. 소켓 통신 서버/클라이언트
- 9. 클라이언트 응용 프로그램에서 제어하는 방법
- 10. C# 클라이언트 응용 프로그램에서 Kerberos 티켓 사용
- 11. 클라이언트 서버 wcf 응용 프로그램에서 세션 사용
- 12. MVVM 클라이언트 응용 프로그램에서 제어 사용 역전
- 13. 클라이언트 (소켓 UDP)
- 14. 자바 클라이언트/서버 소켓
- 15. 클라이언트 서버 udp 소켓
- 16. PHP 소켓 서버/클라이언트
- 17. 클라이언트 서버 소켓 보안
- 18. Java 소켓 클라이언트/서버
- 19. 소켓 자바 클라이언트 - 서버
- 20. 최대 클라이언트 소켓
- 21. 클라이언트 영구 소켓
- 22. Java 소켓 클라이언트 패턴
- 23. 비동기 클라이언트 소켓 예제 (
- 24. Java의 다중 클라이언트 소켓?
- 25. 블로킹 소켓 클라이언트 예제
- 26. 클라이언트 서버 소켓 통신
- 27. 클라이언트 측의 소켓 연결
- 28. 클라이언트/서버 소켓 통신
- 29. 루아 소켓 클라이언트
- 30. 클라이언트 - 서버 응용 프로그램에서 Android 소켓 오류가 발생했습니다.
당신이 무엇을 의미하는 정교한을 "고정 된 시간에 대한 소켓에 읽기"? 제한된 시간 동안 만 클라이언트를 연결 하시겠습니까? 아니면 클라이언트가 얼마 동안 아무것도받지 못하면 시간 초과를 원합니까? –
무엇을 시도 했습니까? https://www.google.ru/search?q=c+socket+select+tutorial –