我一直在制作服务器.我在方法中使用TcpListener.AcceptTcpClientAsync()async,但我不知道如何实际使它工作.我的代码现在是:
private static async void StartServer()
{
Console.WriteLine("S: Server started on port {0}", WebVars.ServerPort);
var listener = new TcpListener(WebVars.LocalIp, WebVars.ServerPort);
listener.Start();
var client = await listener.AcceptTcpClientAsync();
}
Run Code Online (Sandbox Code Playgroud)
我该如何处理客户?我只是继续编码,它会自动创建相同方法的新线程,还是我需要做一些魔术方法来为我做?
编辑:当前代码:
private static Task HandleClientAsync(TcpClient client)
{
var stream = client.GetStream();
// do stuff
}
/// <summary>
/// Method to be used on seperate thread.
/// </summary>
private static async void RunServerAsync()
{
while (true)
{
Console.WriteLine("S: Server started on port {0}", WebVars.ServerPort);
var listener = new TcpListener(WebVars.LocalIp, WebVars.ServerPort);
listener.Start(); …Run Code Online (Sandbox Code Playgroud) 我正在创建一个应用程序,我遇到了Firebase的数据库和身份验证服务的问题.
过了一会儿,当我验证(使用火力地堡验证),并使用我的应用程序,似乎我的数据库ValueEventListeners不被调用,即使是数据库中的数据.
我如何添加我的听众:
FirebaseDatabase
.getInstance()
.getReference()
.child("my_child")
.addValueEventListener(new ValueEventListener()
{
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
Log.d("App", "onDataChange");
}
@Override
public void onCancelled(DatabaseError databaseError)
{
}
});
Run Code Online (Sandbox Code Playgroud)
我试过的东西:
任何帮助将非常感激.
我一直在编写一个程序,用于存储学生姓名和年龄(名字,姓氏,年龄在.txt文件中).我现在正在制作"删除学生"部分,当我希望用户选择要删除的名称(通过切断文件名的.txt扩展名来打印)时,它不会替换".txt"部分没有.
代码是:
string inputSel; // Selection string for delete
Console.WriteLine(" -- Deleting Grade {0} -- ", grade);
Console.WriteLine("- Enter a student name to delete: ");
foreach (string file in fileNames)
{
file.Replace(".txt", "");
studentNames.Add(file);
Console.WriteLine(file); // debug
}
foreach (string name in studentNames)
{
Console.Write("{0}\t", name);
}
Console.WriteLine();
Console.Write("> ");
inputSel = Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
其中fileNames是a List<string>,它是此代码所在方法的参数.schoolNames也是a List<string>,它存储名称(文件名不包含.txt),但由于某种原因,它仍然使用.txt打印名称.
长话短说,它不会取代".txt"用"".
我一直用C#编写一个文本冒险游戏.我想做一个你遇到口袋妖怪的场景.我想让3个随机口袋妖怪遇到,我做了一个方法,返回你找到的口袋妖怪的名字.代码是:
public string choosePokemon()
{
Random random = new Random();
int pokemonChosen = random.Next();
if (pokemonChosen == 1)
{
string pokemon = "Pidgey";
return pokemon;
}
if (pokemonChosen == 2)
{
string pokemon = "Charmander";
return pokemon;
}
if (pokemonChosen == 3)
{
string pokemon = "Geodude";
return pokemon;
}
return "missingno";
}
Run Code Online (Sandbox Code Playgroud)
每当我执行代码时,它都会显示"你遇到了一个missno!".我希望它返回名称并打破方法,返回到场景的方法.我return "missingno";在最后放了一个,因为Studio会给我一个错误,并非所有代码路径都返回一个值.
我一直在编写一个使用XML的数据库程序.每当程序引导并且在指定的路径中找不到XML文件时,它就会生成:
<!-- Studnet Database -->
<schoolDB>
<Grades>
<Grade10/>
<Grade11/>
<Grade12/>
</Grades>
<Employees/>
</schoolDB>
Run Code Online (Sandbox Code Playgroud)
我希望程序在元素中添加一个element被调用者(提示用户输入10到12之间的等级,然后将其解析为Grade10 - > Grade12).我写了这个: studentGrade*
XDocument doc = XDocument.Load(prog.dbFile);
doc.Element(toWriteGrade).Add(new XElement("student",
new XElement("name", name),
new XElement("age", age)));
doc.Save(prog.dbFile);
Run Code Online (Sandbox Code Playgroud)
当我运行它时,它给了我一个错误:
StudentClone1.exe中出现未处理的"System.NullReferenceException"类型异常.附加信息:对象引用未设置为对象的实例.
这有什么不对?
我一直在编写一个使用的聊天程序System.Net.我也有一个配置XML文件%appdata%\.ilan,但是当我想声明一个新的XDocument类型变量时,Visual Studio Ultimate 2013不会将它识别为变量,当我完成整个变量时,它说get or set accessor expected.我在使用XDocument的同一个Studio中创建了一个不同的程序,它在那里工作!
我有System.Xml;,System.Xml.Linq;在顶部,所以我不知道我的代码有什么问题:
public void DefaultXML
{
XDocument doc = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
new XComment(" - IlanChat Settings File - "),
new XElement("settings",
new XElement("nick", "User")));
}
Run Code Online (Sandbox Code Playgroud)
我把它与我之前的程序进行了比较,语法是一样的.
c# ×5
linq ×2
xml ×2
android ×1
foreach ×1
if-statement ×1
linq-to-xml ×1
return ×1
string ×1
tcp ×1
tcpclient ×1
tcplistener ×1