我是要实现两个计算机通讯,访问过程中产生这样的错误提示:
“由于目标机器积极拒绝,无法连接。”
socket编程小弟刚刚接触,很不懂,请执教!
代码:(别人的自己拿来练习)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Collections;
namespace SocketSample
{
public partial class SocketSample : Form
{
private NetworkStream networkStream;
private StreamReader streamReader;
private StreamWriter streamWriter;
ArrayList sb;
TcpClient myclient ;
bool flag = false;
public SocketSample()
{
sb = new ArrayList();
InitializeComponent();
if (!flag)
Connect();
//get a Network stream from the server
networkStream = myclient.GetStream();
streamReader = new StreamReader(networkStream);
streamWriter = new StreamWriter(networkStream);
ShowMessage();
}
protected void Connect()
{
//connect to the "localhost" at the give port
//if you have some other server name then you can use that instead of "localhost"
try
{
sb.Add("Conneting to Server");
myclient = new TcpClient("192.168.1.223", 1234);
sb.Add("Conneted,Please enter something in the textbox");
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
sb.Add(string.Format("Failed to connect to server at {0}:1234", "localhost"));
}
flag = true;
}
protected void ShowMessage()
{
for (int i = 0; i < sb.Count; i++)
{
t2.Items.Add((object)sb[i].ToString());
}
sb.Clear();
}
private void t1_TextChanged(object sender, EventArgs e)
{
if (t1.Text == "")
bts.Enabled = false;
else
bts.Enabled = true;
}
private void bts_Click(object sender, EventArgs e)
{
if (t1.Text == "")
{
sb.Add("Please enter something in the textbox.");
t1.Focus();
return;
}
string s;
try
{
streamWriter.WriteLine(t1.Text);
Console.WriteLine("Sending Message");
streamWriter.Flush();
s = streamReader.ReadLine();
Console.WriteLine("Reading Message");
Console.WriteLine(s);
sb.Add(s);
t1.Text = "";
t1.Focus();
ShowMessage();
}
catch
{
MessageBox.Show("Error.");
}
}
}
}
上面的为客户端
下面的为服务器端
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;
namespace Echoserver
{
class Echoserver
{
static void Main(string[] args)
{
//TcpListener is listening on the given port
Int32 port = 1234;
//IPAddress is connetct ip address
//IPAddress addr = IPAddress.Parse("127.0.0.1");
IPAddress ipAddress = Dns.GetHostEntry("localhost").AddressList[0];
TcpListener tcpListener = new TcpListener(ipAddress, port);
tcpListener.Start();
Console.WriteLine("Server Started");
//Accepts a new connection
Socket socketForClient = tcpListener.AcceptSocket();
//StreamWriter and StreamReader Classes for reading and writing the data to and from.
//The server reads the meassage sent by the Client ,converts it to upper case and sends it back to the client.
//Lastly close all the streams.
try
{
if (socketForClient.Connected)
{
while (true)
{
Console.WriteLine("Client connected");
NetworkStream networkStream = new NetworkStream(socketForClient);
StreamWriter streamWriter = new StreamWriter(networkStream);
StreamReader streamReader = new StreamReader(networkStream);
string line = streamReader.ReadLine();
Console.WriteLine("Read:" + line);
line = line.ToUpper() + "!";
streamWriter.WriteLine(line);
Console.WriteLine("Wrote:" + line);
streamWriter.Flush();
}
}
socketForClient.Close();
Console.WriteLine("Exiting");
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
}
}
评论