C#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.Threading;
using System.Net.Sockets;
using System.Net;
using System.IO;
namespace SocketServer
{
public partial class Form1 : Form
{
private Socket s; //定义Socket对象
private Thread th; //客户端连接服务器线程
public Socket cSocket; //单个客户端连接的Socket对象
public NetworkStream ns; //网络流
public StreamReader sr; //流读取
public StreamWriter sw; //流写入
private delegate void SetTextCallback(); //用于操作主线程控件
public Form1()
{
InitializeComponent();
}
public void Communication()
{
while (true)
{
try
{
cSocket = s.Accept(); //用cSocket来代表该客户端连接
if (cSocket.Connected) //测试连接是否成功
{
ns = new NetworkStream(cSocket); //建立网络流,便于数据的读取
sr = new StreamReader(ns); //实例化读取流对象
sw = new StreamWriter(ns); //实例化写入流对象
test(); //从流中读取
sw.WriteLine("收到请求,允许连接"); //向流中写入数据
sw.Flush(); //清理缓冲区
}
else
{
MessageBox.Show("连接失败");
}
}
catch (SocketException ex)
{
MessageBox.Show(ex.Message); //捕获Socket异常
}
catch (Exception es)
{
MessageBox.Show("其他异常" + es.Message); //捕获其他异常
}
}
}
public void send()
{
lbInfo.Items.Add(sr.ReadLine() + "\n");
}
public void test()
{
SetTextCallback stcb = new SetTextCallback(send);
Invoke(stcb);
}
private void button1_Click(object sender, EventArgs e)
{
button1.Enabled = false;
s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress serverIP = IPAddress.Parse("222.18.142.171");
//IPEndPoint server = new IPEndPoint(serverIP,13);
IPEndPoint server = new IPEndPoint(serverIP, 13);
//s.Bind(server);
s.Bind(server);
s.Listen(10);
try
{
th = new Thread(new ThreadStart(Communication));
th.Start();
label.Text = "服务器启动成功";
}
catch (Exception es)
{
MessageBox.Show("服务器启动失败"+es.Message);
}
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
this.Close();
}
}
}
追问:把IPAddress serverIP = IPAddress.Parse("222.18.142.171");换成:IPAddress serverIP = IPAddress.Parse("127.0.0.1");就可以,但无法实现与本机上的另外一个“客户端”进行通信。