当前位置: 技术问答>linux和unix
Linux windows socket 连接问题
来源: 互联网 发布时间:2016-08-13
本文导语: 总是连接不上, 现在想windows做服务器(C#.net 2.0)写的。 Linux做客户端。连接时 提示 connection refused windos 连接linux时提示 目标机拒绝。 防火墙什么的都关掉了,ping都能通。 请朋友们帮我看。 windows 服务器 C# ...
总是连接不上,
现在想windows做服务器(C#.net 2.0)写的。
Linux做客户端。连接时 提示 connection refused
windos 连接linux时提示 目标机拒绝。
防火墙什么的都关掉了,ping都能通。
请朋友们帮我看。
windows 服务器 C# 代码如下
using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Net;
namespace TestTools.SocketServer
{
public class SocketServer
{
private Socket _Server;
private IPAddress _IP;
private IPEndPoint _IPE;
private int _Port = 6630;
protected Encoding encoding = Encoding.GetEncoding("GB2312");
private Socket _temp;
public SocketServer()
{
Create();
}
private void Create()
{
if (null == _Server)
{
_Server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
_IP = GetServerIP();
_IPE = new IPEndPoint(_IP, _Port);
_Server.Bind(_IPE);
}
}
public static IPAddress GetServerIP()
{
IPHostEntry ieh = Dns.GetHostEntry(Dns.GetHostName());
return ieh.AddressList[0];
}
public void Start()
{
Create();
_Server.Listen(0);
_temp = _Server.Accept();//为新建连接创建新的Socket。
Console.WriteLine("Connected.");
}
public void Receive()
{
string recvStr = "";
byte[] recvBytes = new byte[1024];
int bytes;
bytes = _temp.Receive(recvBytes, recvBytes.Length, 0);
recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);
Console.WriteLine("Server Get Message:{0}", recvStr);
}
public void Send(string data)
{
byte[] bs = Encoding.ASCII.GetBytes(data);
_temp.Send(bs, bs.Length, 0);//发送测试信息
}
public void Disconnect()
{
_Server.Shutdown(SocketShutdown.Both);
_Server.Disconnect(true);
}
public bool isConnect()
{
Create();
return _Server.Connected;
}
internal void Close()
{
_Server.Close();
}
}
}
Linux c 客户端 代码如下
#include "./head.h"
main()
{
int sockfd;
int len;
struct sockaddr_in address;
int result;
int i,byte;
char char_recv,char_send;
if((sockfd = socket(AF_INET,SOCK_STREAM,0))==-1)
{
perror("socket");
exit(EXIT_FAILURE);
}
address.sin_family = AF_INET;
address.sin_addr.s_addr = inet_addr("192.168.1.103");
address.sin_port = 6630;
len = sizeof(address);
if((result = connect(sockfd,(struct sockaddr*)&address,len))==-1)
{
perror("connect");
exit(EXIT_FAILURE);
}
sleep(1);
char ss[222];
struct msg message;
for(i=0,char_send='A';i
现在想windows做服务器(C#.net 2.0)写的。
Linux做客户端。连接时 提示 connection refused
windos 连接linux时提示 目标机拒绝。
防火墙什么的都关掉了,ping都能通。
请朋友们帮我看。
windows 服务器 C# 代码如下
using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Net;
namespace TestTools.SocketServer
{
public class SocketServer
{
private Socket _Server;
private IPAddress _IP;
private IPEndPoint _IPE;
private int _Port = 6630;
protected Encoding encoding = Encoding.GetEncoding("GB2312");
private Socket _temp;
public SocketServer()
{
Create();
}
private void Create()
{
if (null == _Server)
{
_Server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
_IP = GetServerIP();
_IPE = new IPEndPoint(_IP, _Port);
_Server.Bind(_IPE);
}
}
public static IPAddress GetServerIP()
{
IPHostEntry ieh = Dns.GetHostEntry(Dns.GetHostName());
return ieh.AddressList[0];
}
public void Start()
{
Create();
_Server.Listen(0);
_temp = _Server.Accept();//为新建连接创建新的Socket。
Console.WriteLine("Connected.");
}
public void Receive()
{
string recvStr = "";
byte[] recvBytes = new byte[1024];
int bytes;
bytes = _temp.Receive(recvBytes, recvBytes.Length, 0);
recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);
Console.WriteLine("Server Get Message:{0}", recvStr);
}
public void Send(string data)
{
byte[] bs = Encoding.ASCII.GetBytes(data);
_temp.Send(bs, bs.Length, 0);//发送测试信息
}
public void Disconnect()
{
_Server.Shutdown(SocketShutdown.Both);
_Server.Disconnect(true);
}
public bool isConnect()
{
Create();
return _Server.Connected;
}
internal void Close()
{
_Server.Close();
}
}
}
Linux c 客户端 代码如下
#include "./head.h"
main()
{
int sockfd;
int len;
struct sockaddr_in address;
int result;
int i,byte;
char char_recv,char_send;
if((sockfd = socket(AF_INET,SOCK_STREAM,0))==-1)
{
perror("socket");
exit(EXIT_FAILURE);
}
address.sin_family = AF_INET;
address.sin_addr.s_addr = inet_addr("192.168.1.103");
address.sin_port = 6630;
len = sizeof(address);
if((result = connect(sockfd,(struct sockaddr*)&address,len))==-1)
{
perror("connect");
exit(EXIT_FAILURE);
}
sleep(1);
char ss[222];
struct msg message;
for(i=0,char_send='A';i