Всем привет. У меня проблема с соединением с сервером через сокеты. Код формочки:
| Код | using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using System.Net; using System.Net.Sockets;
namespace WindowsFormsApplication1 { public partial class Form1 : Form { Socket s; public Form1() { InitializeComponent(); }
private void openBtn_Click(object sender, EventArgs e) { string host = "localhost"; int port = 1872; s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPAddress[] addr = Dns.GetHostEntry(host).AddressList; s.Connect(addr[0], port); }
private void closeBtn_Click(object sender, EventArgs e) { s.Shutdown(SocketShutdown.Both); s.Close(); }
private void sendBtn_Click(object sender, EventArgs e) { s.Send(Encoding.ASCII.GetBytes("This is a test")); }
} }
|
При нажатии open открывается соединение, сервер видит клиента и серверу почему-то приходит пустая строка. При нажатии send ничего не происходит. При нажатии close все нормально - сокет закрывается, сервер это нормально видит.
Такой вариант формы:
| Код | ... s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPAddress[] addr = Dns.GetHostEntry(host).AddressList; s.Connect(addr[0], port); s.Send(Encoding.ASCII.GetBytes("This is a test (connect)"));//это добавил ...
|
Этот вариант первое сообщение отсылает (которое при соединении), остальные нет.
Как сделать, чтоб передача сообщения при нажатии на кнопку работала? (сервер рабочий, проверял...) |