我现在使用的是socket,刚才我没有说明白,因为在实现往服务器发送数据的同时,这个程序本身也是一个服务器,它同时接收从另一个socket发送过来的数据,然后将发送过来的数据进行一些处理,然后在发送到刚才提到过的服务端去,因为初次设计到socket编程,很多不明白,还请尽量详细点,谢谢 to mrhan2008 上面的代码能够实现指定发送端口么? 谢谢
可以的 我给你发完整的代码 看下面的 using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Threading; using System.Net.Sockets; using System.IO; namespace Network { /// <summary> /// Form1 的摘要说明。 /// </summary> public class Form1 : System.Windows.Forms.Form { //这里窗口设计区域省略 private void StartListen() { MyTcpListener=new TcpListener(888); //开始监听 MyTcpListener.Start(); while(true) {//获取TcpClient TcpClient MyTcpClient=MyTcpListener.AcceptTcpClient(); NetworkStream MyStream=MyTcpClient.GetStream(); byte[] MyBytes = new byte[1024]; int MyBytesRead=MyStream.Read(MyBytes,0,MyBytes.Length); string MyMessage=System.Text.Encoding.Default.GetString(MyBytes,0,MyBytesRead); this.richTextBox2.Text+=MyMessage; } } private void button1_Click(object sender, System.EventArgs e) {//发送聊天内容 if(this.textBox1.Text.Length<1||this.textBox2.Text.Length<1||this.richTextBox1.Text.Length<1) return; try { string MyMessage= this.textBox2.Text+":"+this.richTextBox1.Text+"\n"; //根据目标计算机地址建立连接 TcpClient MyTcpClient = new TcpClient(this.textBox1.Text, 888); //获得用于网络访问的数据流 NetworkStream MyTcpStream =MyTcpClient.GetStream(); StreamWriter MyStream = new StreamWriter(MyTcpStream); //将字符串写入流 MyStream.Write(MyMessage); //将缓冲数据写入基础流 MyStream.Flush(); //关闭网络流 MyStream.Close(); MyTcpClient.Close(); this.richTextBox3.AppendText(this.richTextBox1.Text+"\n"); this.richTextBox1.Clear(); } catch(Exception Err) { MessageBox.Show(Err.Message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information); } } private void Form1_Load(object sender, System.EventArgs e) {//开始监听 //创建监听线程 this.MyListenThread= new Thread(new ThreadStart(StartListen)); //启动线程 this.MyListenThread.Start(); } private void Form1_Closed(object sender, System.EventArgs e) {//关闭SOCKET try { if (this.MyTcpListener!=null) {//关闭监听器 this.MyTcpListener.Stop(); } if (this.MyListenThread!=null) { //如果线程还处于运行状态就关闭它 if (this.MyListenThread.ThreadState==ThreadState.Running) { this.MyListenThread.Abort(); } } } catch(Exception Err) { MessageBox.Show(Err.Message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information); } } } }
string MyMessage= this.textBox2.Text+":"+this.richTextBox1.Text+"\n";
//根据目标计算机地址建立连接
TcpClient MyTcpClient = new TcpClient(this.textBox1.Text, 888);
//获得用于网络访问的数据流
NetworkStream MyTcpStream =MyTcpClient.GetStream();
StreamWriter MyStream = new StreamWriter(MyTcpStream);
//将字符串写入流
MyStream.Write(MyMessage);
//将缓冲数据写入基础流
MyStream.Flush();
//关闭网络流
MyStream.Close();
MyTcpClient.Close();
this.richTextBox3.AppendText(this.richTextBox1.Text+"\n");
this.richTextBox1.Clear();
to mrhan2008
上面的代码能够实现指定发送端口么?
谢谢
看下面的 using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Threading;
using System.Net.Sockets;
using System.IO;
namespace Network
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
//这里窗口设计区域省略
private void StartListen()
{
MyTcpListener=new TcpListener(888);
//开始监听
MyTcpListener.Start();
while(true)
{//获取TcpClient
TcpClient MyTcpClient=MyTcpListener.AcceptTcpClient();
NetworkStream MyStream=MyTcpClient.GetStream();
byte[] MyBytes = new byte[1024];
int MyBytesRead=MyStream.Read(MyBytes,0,MyBytes.Length);
string MyMessage=System.Text.Encoding.Default.GetString(MyBytes,0,MyBytesRead);
this.richTextBox2.Text+=MyMessage;
}
}
private void button1_Click(object sender, System.EventArgs e)
{//发送聊天内容
if(this.textBox1.Text.Length<1||this.textBox2.Text.Length<1||this.richTextBox1.Text.Length<1)
return;
try
{
string MyMessage= this.textBox2.Text+":"+this.richTextBox1.Text+"\n";
//根据目标计算机地址建立连接
TcpClient MyTcpClient = new TcpClient(this.textBox1.Text, 888);
//获得用于网络访问的数据流
NetworkStream MyTcpStream =MyTcpClient.GetStream();
StreamWriter MyStream = new StreamWriter(MyTcpStream);
//将字符串写入流
MyStream.Write(MyMessage);
//将缓冲数据写入基础流
MyStream.Flush();
//关闭网络流
MyStream.Close();
MyTcpClient.Close();
this.richTextBox3.AppendText(this.richTextBox1.Text+"\n");
this.richTextBox1.Clear();
}
catch(Exception Err)
{
MessageBox.Show(Err.Message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
private void Form1_Load(object sender, System.EventArgs e)
{//开始监听
//创建监听线程
this.MyListenThread= new Thread(new ThreadStart(StartListen));
//启动线程
this.MyListenThread.Start();
} private void Form1_Closed(object sender, System.EventArgs e)
{//关闭SOCKET
try
{
if (this.MyTcpListener!=null)
{//关闭监听器
this.MyTcpListener.Stop();
}
if (this.MyListenThread!=null)
{ //如果线程还处于运行状态就关闭它
if (this.MyListenThread.ThreadState==ThreadState.Running)
{
this.MyListenThread.Abort();
}
}
}
catch(Exception Err)
{
MessageBox.Show(Err.Message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
}
}