我有一台服务器在一台机器上运行,并将其使用的端口转发到我的路由器,另一台运行客户端的机器使用ISP分配的外部IP地址而不是本地地址连接到服务器.这一切工作正常,它连接,但当我检查连接的套接字(客户端)的地址时,它显示的IP地址是完全不同的?它告诉我148.49.68.0.我在ipconfig上找不到这个,也不明白这是从哪里出来的.客户端不应该显示我的外部地址吗?(看到两台计算机使用相同的外部IP地址).
[编辑]添加了服务器源
#include <iostream>
#include <windows.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <string.h>
using namespace std;
int PORT;
const int winsock_version = 2;
const int max_con = 10;
string SERVER_ADDRS;
void Bind(SOCKET &serv,struct sockaddr_in &serv_info,int size);
void Listen(SOCKET &serv,int max_con);
void connection_info(struct sockaddr_in &client);
bool communication(SOCKET &client);
SOCKET Accept(SOCKET &serv);
int main(void){
WSADATA wsadata;
if ( WSAStartup(MAKEWORD(winsock_version,0),&wsadata) == 0 ){
cout<<"-[Initialized.]" << endl;
cout<<"-[Server Address (leave blank to scan for all IP's)]: ";
getline(cin,SERVER_ADDRS);
cout<<"-[Port]: "; …Run Code Online (Sandbox Code Playgroud) 即时通讯尝试进入c编程(LINUX)我有什么样的IP我有DHCP或静态.有人知道怎么做?我使用struct ifaddrs提取我的ip; 很高兴找出该结构是否可以提供信息.谢谢你提前:)
我已经知道让你的内部IP的多种方式(使用ifconfig,IP地址,/ etc/hosts文件,等等),但我试图写一个bash脚本,将始终返回内部IP.问题是,许多单行(/ sbin目录/使用ifconfig | grep的INET |头-1 | SED的/ \:/ /'| awk的 '{打印$ 3}')可以返回多个IP地址,我需要区分内部一个手动.
我怀疑是电脑,也没有之间与外部IP和内部IP,因此没有100%,保证的方式得到正确的IP差异.
最终结果是该脚本将返回内部IP,无论其是192地址还是204地址等.
提前致谢.
正如标题所说,我想在Windows中将ip地址与批处理匹配,请告诉我如何做到这一点?
我看到" findstr "可以匹配像" [0-9] " 这样的正则表达式,但是"findstr"如何匹配它会出现一到三次?
使用此处的代码:https://libbits.wordpress.com/2011/05/17/check-if-ip-is-within-range-specified-in-cidr-in-java/
// Step 1. Convert IPs into ints (32 bits).
// E.g. 157.166.224.26 becomes 10011101 10100110 11100000 00011010
int addr = (( 157 << 24 ) & 0xFF000000)
| (( 166 << 16 ) & 0xFF0000)
| (( 224 << 8 ) & 0xFF00)
| ( 26 & 0xFF);
// Step 2. Get CIDR mask
int mask = (-1) << (32 - 10);
// Step 3. Find lowest IP address
int lowest = addr & mask;
// …Run Code Online (Sandbox Code Playgroud) 我有以下代码无效.camUrl如果我加载到Firefox并从我的摄像头流式传输我的链接,但在运行时我的图片框中没有显示任何内容.有什么想法吗?
public Thread _camThread;
private string camUrl = "http://my-domain-ip:2080/videostream.cgi?user=admin&pwd=password";
public HttpWebRequest webReq;
public WebResponse webRes;
public Stream sr;
private void btnStart_Click(object sender, EventArgs e)
{
if (_camThread == null) _camThread = new Thread(new ThreadStart(RunCam));
_camThread.Start();
}
private void RunCam()
{
try
{
webReq = (HttpWebRequest)WebRequest.Create(camUrl);
webReq.AllowWriteStreamBuffering = true;
webReq.Timeout = 20000;
using (webRes = webReq.GetResponse())
{
while ((sr = webRes.GetResponseStream()) != null)
{
image.Image = Image.FromStream(sr);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用IE打开IP指定的网页(为什么IE?因为不是每个Windows都安装了Chrome或Firefox)并将其显示在一个简单的Winforms窗口中.
上面提到的网页是一个BI(商业智能)网页,它将动态更新自己,我希望用户在使用新统计信息更新页面时坐下来查看它.
事件流程:
用户将输入特定的IP地址,然后单击"获取网页".
将弹出新的Winform窗口,其中包含特定的网页.
此外,如果有一个隐藏IE导航面板的选项会很棒,因为我不想在这个窗口中提供浏览选项.
我尝试使用CefSharp做到这一点,但我没有到达任何地方.我看到的每个例子都是用asp编写的.
这是我到目前为止做的,这是行不通的:
namespace BingoDesktopWindow
{
public partial class BingoWin : Form
{
public BingoWin()
{
InitializeComponent();
CefSettings settings = new CefSettings();
CefSharp.Cef.Initialize(settings);
ChromiumWebBrowser browser = new ChromiumWebBrowser("http://12.345.67.89/bingo/Default.html");
this.browserPanel.Container.Add(browser);
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢!}
我一直试图快速编写一个简单的TCP / IP服务器,但是我无法提出解决方案。我已经尝试过在这里和整个网络中进行搜索,但是找不到与我正在使用的最新Swift版本兼容的内容:
Apple Swift版本2.1(swiftlang-700.1.101.6 clang-700.1.76)
目标:x86_64-apple-darwin14.5.0
操作系统:
Mac OS X 10.10.5 Yosemitte
下面的代码已经基于此代码完成:带Swift的Socket Server示例
import Foundation
var sock_fd: Int32
var server_addr_size: Int
sock_fd = socket(AF_INET, SOCK_STREAM, 0);
if sock_fd == -1 {
print("Failure: creating socket")
exit(EXIT_FAILURE)
}
server_addr_size = sizeof(sockaddr_in)
var server_addr = NSMutableData(length: server_addr_size)!
memset(UnsafeMutablePointer<Void>(server_addr.mutableBytes), 0, server_addr_size)
var addr = UnsafeMutablePointer<sockaddr_in>(server_addr.mutableBytes)
addr.memory.sin_len = __uint8_t(server_addr_size)
addr.memory.sin_family = sa_family_t(AF_INET) // chooses IPv4
addr.memory.sin_port = 12321 // chooses the port
let bind_server = bind(sock_fd, UnsafePointer<sockaddr>(server_addr.mutableBytes), socklen_t(server_addr_size))
if bind_server == -1 …Run Code Online (Sandbox Code Playgroud) 我正在使用套接字和Java编写聊天程序,我必须指定服务器监听的端口.
这是我的问题:
我如何确定该端口始终是免费的?
如果另一个程序也在监听该端口是否重要?
如果端口必须是空闲的并且默认端口已被占用,我将如何通知客户端端口号的更改?
我应该这样做,以便服务器继续尝试绑定到一个新端口,递增端口号,直到找到一个空闲端口?