[問題] 關於1對1聊天程式
我是一個剛接觸c#的新手
我寫C#部分的socket
想寫一個1對1聊天程式 一個是client 一個是server
還不太會使用thread
以下是我寫的程式,但是client端傳一次話給server端後 ,就無法接收了,server端也無
法傳資料過去
server部分:
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.NetworkInformation;
using System.Net.Sockets;
using System.IO;
namespace chatserver
{
public partial class Form1 : Form
{
Socket serverSocket, theConnection;
IPHostEntry bindAddress;
IPEndPoint myHost;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
serverSocket = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
string hostName = Dns.GetHostName();
bindAddress = Dns.Resolve(hostName);
try
{
myHost = new IPEndPoint(bindAddress.AddressList[0],
Convert.ToInt32(textBox1.Text));
}
catch (ArgumentException se)
{
MessageBox.Show("invalid port number");
return;
}
try
{
serverSocket.Bind(myHost);
serverSocket.Listen(100);
}
catch (SocketException se)
{
MessageBox.Show("Could not bind");
return;
}
MessageBox.Show("成功建立連線");
MessageBox.Show("等待連線....\n");
theConnection = serverSocket.Accept();
this.textBox3.Text = receiveMessage();
this.textBox3.Text = this.textBox3.Text + "\n";
// theConnection.Close();
}
private string receiveMessage()
{
int bytes = 0;
Byte[] RecvBytes = new Byte[256];
String RecvString = "";
try
{
bytes = theConnection.Receive(RecvBytes,
RecvBytes.Length, 0);
}
catch (SocketException se)
{
MessageBox.Show("資料接收錯誤");
}
RecvString = Encoding.UTF8.GetString(RecvBytes, 0, bytes);
// MessageBox.Show(RecvString);
return RecvString;
}
private void sendMessage()
{
String tmpstr = "";
tmpstr = textBox2.Text;
Byte[] SendBytes = Encoding.UTF8.GetBytes(tmpstr.ToCharArray());
try
{
serverSocket.Send(SendBytes, SendBytes.Length, 0);
}
catch (SocketException se)
{
MessageBox.Show(Convert.ToString(se));
//MessageBox.Show("無法傳送");
}
}
private void button2_Click(object sender, EventArgs e)
{
sendMessage();
this.textBox3.Text =this.textBox3.Text+textBox2.Text;
this.textBox3.Text = this.textBox3.Text + "\n";
this.textBox3.Text = receiveMessage();
this.textBox3.Text = this.textBox3.Text + "\n";
}
private void textBox3_TextChanged(object sender, EventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
client部分:
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;
namespace chat
{
public partial class Form1 : Form
{
Socket s;
public Form1()
{
InitializeComponent();
}
public void abc(string ip,int port,string String)
{
IPAddress HostAddr = IPAddress.Parse(ip);
IPEndPoint host = new IPEndPoint(HostAddr, port);
s = new Socket(AddressFamily.InterNetwork, SocketType.Stream,
ProtocolType.Tcp);
try
{
s.Connect(host);
}
catch (SocketException se)
{
MessageBox.Show("could not establish connection to server");
}
MessageBox.Show("success establish connection to server");
// receiveMessage();
}
private void button1_Click(object sender, EventArgs e)
{
abc(textBox1.Text,Convert.ToInt32(textBox2.Text),"");
}
private string receiveMessage()
{
int bytes = 0;
Byte[] RecvBytes = new Byte[256];
string RecvString = "";
try
{
bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);
}
catch (SocketException se)
{
MessageBox.Show("資料無法接收");
}
RecvString = Encoding.UTF8.GetString(RecvBytes, 0, bytes);
return RecvString;
}
private void sendMessage()
{
String tmpstr = textBox3.Text;
Byte[] SendBytes = Encoding.UTF8.GetBytes(tmpstr);
try
{
s.Send(SendBytes, SendBytes.Length, 0);
}
catch (SocketException se)
{
MessageBox.Show("無法傳送");
}
}
private void button2_Click(object sender, EventArgs e)
{
sendMessage();
this.textBox4.Text = textBox3.Text;
this.textBox4.Text = this.textBox4.Text + "\n";
this.textBox4.Text = receiveMessage();
textBox4.Text = textBox4.Text + "\n";
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void textBox4_TextChanged(object sender, EventArgs e)
{
}
}
}
請問此問題要如何解決呢?
還是我有更多問題或著是對問題有所誤會@@?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.130.189.29
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章