我是要实现两个计算机通讯,访问过程中产生这样的错误提示:“由于目标机器积极拒绝,无法连接。” 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()); } } }}

评论