데이터 통신 클래스의 간단한 프로젝트에서 작업하고 있습니다. 나는 그것이 최대 2 시간이 걸릴 것이라고 예측 했었지만, 웹에 연결하고 C#으로 작업하는 것은 처음으로 소프트웨어를 작성했으며, 꽤 큰 도로 충돌을 겪고있다.어려움 TcpClient를 사용하고 NetworkStreams를 사용하여 C#으로 서버와의 연결을 설정하십시오.
서버에 연결을 설정했지만 서버에서 전혀 피드백을받지 못하는 것 같습니다. 다음은 연결을 설정하기 위해 실행중인 코드입니다.
TcpClient conn = new TcpClient();
conn.Connect(host, port);
StreamReader reader = new StreamReader(conn.GetStream());
StreamWriter writer = new StreamWriter(conn.GetStream());
Console.WriteLine(conn.Connected); //This line does print true.
//Console.WriteLine(reader.ReadLine()); I thought I'd get a message when I initially
//connected to the server but this line would hang
여기에서 연결을 설정합니다. 프로젝트의 사양에 따르면 0을 입력하면 서버가 티켓 번호를 반환하도록 요구합니다. 그래서 다음과 같은 코드가 있습니다 :
writer.WriteLine("0");
return reader.ReadLine();
reader.ReadLine()을 실행하려고하면 프로그램이 멈 춥니 다. 나는 독자들에게 다른 방법들을 시도해 왔지만, 그것들 모두에 매달린 것처럼 보인다. 광산과 비슷한 설정으로 많은 코드 샘플을 살펴 봤습니다. 누구든지 내 코드 문제를 볼 수 있습니까? 나는 그 서버에 문제가 있다고 생각하지 않는다. 내 교수는 유닉스 명령 "telnet [host] [port]"를 사용하는 것에 관해서 뭔가를 말했고 나는이 코드에 대해 동일한 호스트와 포트를 사용했다. 나는 이것을 Windows 7 컴퓨터에서 개발 중입니다. C#과 네트워크 프로그래밍에 대한 나의 무지를 사과드립니다.
맹인 정보를 생략 한 경우 알려 주시기 바랍니다. 이것이 내가 처음으로 다루는 것이 긴급한 것을 빠뜨린 것 같아요.
감사합니다. 많은 I/O 장치가 더 효율적이기 때문에, 자주 정보를 버퍼
writer.WriteLine("0");
writer.Flush();
return reader.ReadLine();
스트림
는 O/I 최적화 :
또는 매번이 작업을 수행하지 않으려면 writer.AutoFlush 속성을 true로 설정할 수 있습니다. – KingCronus
@ AdamKing yes 그렇지만 짧은 데이터 버스트를 많이 작성하는 경우 성능이 크게 저하 될 수 있습니다. 기본적으로 false 인 이유가 있습니다. –
크리스, 그 사실을 압니다 만, @Toms 숙제 때문에 나는 그것이 큰 관심사라는 것을 알 수 없습니다. – KingCronus