在互联网上有几个地方向您展示如何获得IP地址.其中很多看起来像这个例子:
String strHostName = string.Empty;
// Getting Ip address of local machine...
// First get the host name of local machine.
strHostName = Dns.GetHostName();
Console.WriteLine("Local Machine's Host Name: " + strHostName);
// Then using host name, get the IP address list..
IPHostEntry ipEntry = Dns.GetHostEntry(strHostName);
IPAddress[] addr = ipEntry.AddressList;
for (int i = 0; i < addr.Length; i++)
{
Console.WriteLine("IP Address {0}: {1} ", i, addr[i].ToString());
}
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我得到了几个IP地址,但我只对获得路由器分配给运行程序的计算机的一个感兴趣:如果他希望访问我计算机中的共享文件夹,我会给某人的IP实例.
如果我没有连接到网络,我通过没有路由器的调制解调器直接连接到互联网,那么我想得到一个错误.如何查看我的计算机是否通过C#连接到网络,以及是否要获取LAN IP地址.
可能重复:
如何在.NET中替换字符串的第一个实例?
假设我有字符串:
string s = "Hello world.";
Run Code Online (Sandbox Code Playgroud)
我怎么能替换第一个o
在这个词Hello
的假设Foo
?
换句话说,我想最终得到:
"HellFoo world."
Run Code Online (Sandbox Code Playgroud)
我知道如何更换所有o,但我想更换第一个
我正在使用几个插件,自定义小部件和一些来自JQuery的其他库.结果我有几个.js和.css文件.我需要为我的网站创建一个加载器,因为它需要一些时间来加载.如果我可以在导入所有之前显示加载器,那将是很好的:
<script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="js/myFunctions.js"></script>
<link type="text/css" href="css/main.css" rel="stylesheet" />
...
....
etc
Run Code Online (Sandbox Code Playgroud)
我找到了几个教程,使我能够异步导入JavaScript库.例如,我可以这样做:
(function () {
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = 'js/jquery-ui-1.8.16.custom.min.js';
var x = document.getElementsByTagName('script')[0];
x.parentNode.insertBefore(s, x);
})();
Run Code Online (Sandbox Code Playgroud)
出于某种原因,当我对我的所有文件做同样的事情时,页面不起作用.我一直在努力试图找到问题的所在,但我找不到它.首先我认为这可能是因为一些javascript函数依赖于其他函数.但是我使用超时功能以正确的顺序加载它们,当一个完成后我继续下一个并且页面仍然表现得很奇怪.例如,我无法点击链接等...动画仍然有效..
这就是我一直在想的......我相信浏览器有一个缓存,这就是为什么第一次加载页面需要很长时间以及下次快速加载页面的原因.所以我想要做的是用一个异步加载所有这些文件的页面替换我的index.html页面.当ajax完成后,将所有这些文件重定向到我计划使用的页面.使用该页面时,加载时间不应太长,因为文件应该包含在浏览器的缓存中.在我的索引页面(异步加载.js和.css文件的页面)我不关心错误.我将只显示一个加载器并在完成后重定向页面...
这个想法是一个很好的选择吗?或者我应该继续尝试实现异步方法?
我加载所有异步的方式就像:
importScripts();
function importScripts()
{
//import: jquery-ui-1.8.16.custom.min.js
getContent("js/jquery-1.6.2.min.js",function (code) {
var s = document.createElement('script');
s.type = 'text/javascript';
//s.async = true;
s.innerHTML=code;
var x = document.getElementsByTagName('script')[0];
x.parentNode.insertBefore(s, x);
setTimeout(insertNext1,1);
});
//import: jquery-ui-1.8.16.custom.min.js
function insertNext1()
{
getContent("js/jquery-ui-1.8.16.custom.min.js",function (code) …
Run Code Online (Sandbox Code Playgroud) 我在命名空间中有几个静态类,mySolution.Macros
例如
static class Indent{
public static void Run(){
// implementation
}
// other helper methods
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是如何在反射的帮助下调用这些方法?
如果方法不是静态的那么我可以做类似的事情:
var macroClasses = Assembly.GetExecutingAssembly().GetTypes().Where( x => x.Namespace.ToUpper().Contains("MACRO") );
foreach (var tempClass in macroClasses)
{
var curInsance = Activator.CreateInstance(tempClass);
// I know have an instance of a macro and will be able to run it
// using reflection I will be able to run the method as:
curInsance.GetType().GetMethod("Run").Invoke(curInsance, null);
}
Run Code Online (Sandbox Code Playgroud)
我想让我的课程保持静态.我怎么能用静态方法做类似的事情?
简而言之,我想从命名空间mySolution.Macros中的所有静态类调用所有Run方法.
我有一个对象列表,我需要将其保存在我的计算机中.我已经阅读了一些论坛,我知道该对象必须是Serializable
.但如果我能得到一个例子,那就太好了.例如,如果我有以下内容:
[Serializable]
public class SomeClass
{
public string someProperty { get; set; }
}
SomeClass object1 = new SomeClass { someProperty = "someString" };
Run Code Online (Sandbox Code Playgroud)
但是,如何object1
在我的计算机中存储某个地方以后再检索?
我不明白为什么我不能使下面的代码工作.我想用JavaScript连接到我的服务器控制台应用程序.然后将数据发送到服务器.
这是服务器代码:
static void Main(string[] args)
{
TcpListener server = new TcpListener(IPAddress.Parse("127.0.0.1"), 9998);
server.Start();
var client = server.AcceptTcpClient();
var stream = client.GetStream();
while (true)
{
var buffer = new byte[1024];
// wait for data to be received
var bytesRead = stream.Read(buffer, 0, buffer.Length);
var r = System.Text.Encoding.UTF8.GetString(buffer);
// write received data to the console
Console.WriteLine(r.Substring(0, bytesRead));
}
}
Run Code Online (Sandbox Code Playgroud)
这是JavaScript:
var ws = new WebSocket("ws://localhost:9998/service");
ws.onopen = function () {
ws.send("Hello World"); // I WANT TO SEND THIS MESSAGE TO THE …
Run Code Online (Sandbox Code Playgroud) 这个UIPanGestureRecognizer
课程有几个例子.例如,我已阅读此内容,但仍无法使用它...
在我正在处理的nib文件上,我有一个UIView
(图像上的白色矩形),我希望用该类拖动:
在我的.m文件中,我放置了:
- (void)setTranslation:(CGPoint)translation inView:(UIView *)view
{
NSLog(@"Test to see if this method gets executed");
}
Run Code Online (Sandbox Code Playgroud)
当我将鼠标拖过时,该方法无法执行UIView
.我也试过放置:
- (void)pan:(UIPanGestureRecognizer *)gesture
{
NSLog(@"testing");
}
Run Code Online (Sandbox Code Playgroud)
并且该方法也不会被执行.也许我错了,但我认为这个方法应该像- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
我必须放置该方法的方法一样工作,只要有触摸就会调用它.
我究竟做错了什么?也许我必须绘制与该方法的连接?如果是这样我怎么能这样做?
我正在创建一个备份应用程序,其中c#扫描目录.在我使用这样的东西之前,为了获取目录中的所有文件和子文件:
DirectoryInfo di = new DirectoryInfo("A:\\");
var directories= di.GetFiles("*", SearchOption.AllDirectories);
foreach (FileInfo d in directories)
{
//Add files to a list so that later they can be compared to see if each file
// needs to be copid or not
}
Run Code Online (Sandbox Code Playgroud)
唯一的问题是,有时无法访问文件,我会收到几个错误.我得到的一个错误示例是:
结果我创建了一个递归方法,它将扫描当前目录中的所有文件.如果该目录中有目录,那么将再次调用该方法传递该目录.关于这个方法的好处是我可以将文件放在try catch块中,如果没有错误,可以选择将这些文件添加到List,如果我有错误,则将目录添加到另一个列表.
try
{
files = di.GetFiles(searchPattern, SearchOption.TopDirectoryOnly);
}
catch
{
//info of this folder was not able to get
lstFilesErrors.Add(sDir(di));
return;
}
Run Code Online (Sandbox Code Playgroud)
所以这个方法效果很好,唯一的问题是当我扫描一个大目录时需要很多次.我怎么能加快这个过程?我的实际方法是这样,以防你需要它.
private void startScan(DirectoryInfo di)
{
//lstFilesErrors is a list of MyFile objects
// I …
Run Code Online (Sandbox Code Playgroud) 我使用NSUserDefaults字典来存储高分等基本信息,这样当用户关闭时,应用程序数据不会丢失.无论如何我使用:
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
Run Code Online (Sandbox Code Playgroud)
存储数据.如果我希望存储一个新的高分,那么我会这样做:
[prefs setInteger:1023 forKey:@"highScore"];
[prefs synchronize]; //this is needed in case the app is closed.
Run Code Online (Sandbox Code Playgroud)
后来如果我想获得高分我会做:
[prefs integerForKey:@"highScore"];
Run Code Online (Sandbox Code Playgroud)
反正问题是,我储存很多其他的事情,因为NSUserDefaults enable
你存储booleans
,integers
,objects
等我有什么方法来执行删除所有键,以便成为NSUserDefaults的像拳头时我启动应用程序?
我正在寻找类似的东西:
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs deleteAllKeysAndObjectsInTheDictionary];
Run Code Online (Sandbox Code Playgroud)
或者可能有一种获取所有键的方法,我必须遍历每个对象,但我不知道如何删除它们.
编辑:
我试过了 :
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[NSUserDefaults resetStandardUserDefaults];
[prefs synchronize];
Run Code Online (Sandbox Code Playgroud)
我仍然能够获得高分....
出于某种原因,我很难从同一个套接字发送和接收数据.无论如何这里是我的客户端代码:
var client = new UdpClient();
IPEndPoint ep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 11000); // endpoint where server is listening (testing localy)
client.Connect(ep);
// send data
client.Send(new byte[] { 1, 2, 3, 4, 5 }, 5);
// then receive data
var receivedData = client.Receive(ref ep); // Exception: An existing connection was forcibly closed by the remote host
Run Code Online (Sandbox Code Playgroud)
基本上我想创建一个协议,我发送一个udp数据包,然后我期待一个响应.就像每个请求的HTTP协议一样,都有响应.如果服务器位于不同的计算机上,则此代码有效.可能存在服务器和客户端在同一台计算机上的情况.
这是服务器:
UdpClient udpServer = new UdpClient(UDP_LISTEN_PORT);
while (true)
{
var groupEP = new IPEndPoint(IPAddress.Any, 11000); // listen on any port
var data = …
Run Code Online (Sandbox Code Playgroud) c# ×7
javascript ×2
objective-c ×2
ajax ×1
asynchronous ×1
cocoa-touch ×1
drag ×1
dynamic ×1
fileinfo ×1
html ×1
html5 ×1
ios ×1
ipad ×1
iphone ×1
networking ×1
performance ×1
reflection ×1
regex ×1
stream ×1
swift ×1
udp ×1
websocket ×1