stephenclearyexamples / tcpchat Goto Github PK
View Code? Open in Web Editor NEWBasic asynchronous TCP/IP chat app
License: MIT License
Basic asynchronous TCP/IP chat app
License: MIT License
If I send 2 messages in a row from the client, the serer got an InvalidOperationException (No reading operation to complete).
Here is my clients Send-Click-Event Code that I have changed - see 2nd call to SendMessageAsync:
private async void Button_Click_1(object sender, RoutedEventArgs e)
{
if (_chatConnection == null)
{
Log.Text += "No connection!\n";
}
else
{
await _chatConnection.SendMessageAsync(new ChatMessage(chatMessageTextBox.Text));
// this is my additional SendMessageAsync call
await _chatConnection.SendMessageAsync(new ChatMessage(chatMessageTextBox.Text));
Log.Text += $"Sent message: {chatMessageTextBox.Text}\n";
}
}
The server exception is raised in ProcessSocketMainLoop.
Any hints on this?
Hi Stephen,
Firstly, thank you for the Asynchronous TCP/IP videos, they have been really useful and contain lots of really useful background info.
In your file .../TcpChat/Chat/ChatServer/Program.cs you have AcceptAsync
inside the while loop, eg
while (true)
{
var connectedSocket = await listeningSocket.AcceptAsync();
// Receive message.
// ...
}
In Microsoft's docs create-a-socket-server AcceptAsync
is before the while loop, eg
var handler = await listener.AcceptAsync();
while (true)
{
// Receive message.
// ...
}
I just wanted to know if there were valid reasons for doing one over the other? Does the Microsoft example only listen for and allow a single connection but your sample listens for multiple connections or are there other things to consider?
Many thanks,
R
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.