解决方案 »
- C#如何将list<Class>数据导入到Excel
- FolderBrowserDialog 只能浏览本地路径?
- 若要使他人能够在远程计算机上查看此特定错误信息的详细信息,请在位于当前 Web 应用程序根目录下的“web.config”配置文件中创建一个 <customEr
- 初学者是在搞不懂了请教。
- TableLayoutPanel的边框色,如何设置?
- MD啊,什么玩意儿!
- 鞠躬求教 文件反删除技术
- C#或者U盘Manufacturer问题?
- 数据绑定问题
- 求助,Visual Studio遇到出错需要关闭
- 关于ConditionalAttribute
- 朋友们帮忙找找对象问题:未将对象引用设置到对象的实例
应该是先侦听到有连接,然后去获取数据
再重新侦听,重新获取
你现在获取数据的while循环里开侦听,不卡死才怪
网上很多现成的代码,好好看看,不要凭想象自己瞎写
就像楼上说的receveData()里调用ServerSocket.Accept();去掉
参考: 同步服务器存储示例using System;
using System.Net;
using System.Net.Sockets;
using System.Text;public class SynchronousSocketListener {
// Incoming data from the client.
public static string data = null; public static void StartListening() {
// Data buffer for incoming data.
byte[] bytes = new Byte[1024]; // Establish the local endpoint for the socket.
// Dns.GetHostName returns the name of the
// host running the application.
IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11000); // Create a TCP/IP socket.
Socket listener = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp ); // Bind the socket to the local endpoint and
// listen for incoming connections.
try {
listener.Bind(localEndPoint);
listener.Listen(10); // Start listening for connections.
while (true) {
Console.WriteLine("Waiting for a connection...");
// Program is suspended while waiting for an incoming connection.
Socket handler = listener.Accept();
data = null; // An incoming connection needs to be processed.
while (true) {
bytes = new byte[1024];
int bytesRec = handler.Receive(bytes);
data += Encoding.ASCII.GetString(bytes,0,bytesRec);
if (data.IndexOf("<EOF>") > -1) {
break;
}
} // Show the data on the console.
Console.WriteLine( "Text received : {0}", data); // Echo the data back to the client.
byte[] msg = Encoding.ASCII.GetBytes(data); handler.Send(msg);
handler.Shutdown(SocketShutdown.Both);
handler.Close();
}
} catch (Exception e) {
Console.WriteLine(e.ToString());
} Console.WriteLine("\nPress ENTER to continue...");
Console.Read();
} public static int Main(String[] args) {
StartListening();
return 0;
}
}