c#发送字符串到服务器

    xiaoxiao2025-03-28  14

    功能界面

    Server代码

     

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net.Sockets; using System.Net; using System.Threading; //using LogHelper; using System.IO; using System.Diagnostics; namespace MyServer2 { class Program { private int port;//监听端口号 private static byte[] result = new byte[1024]; private static Socket server;//服务器Socket private IPAddress ip;//Ip地址 private static Socket client;//客户端Socket private static Thread myThread;//启动监听线程 private static Thread receiveThread;//接收数据线程 public void setConnection() { server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//实例化socket对象(采用网络流传输方式,TCP协议传输) server.Bind(new IPEndPoint(ip, port));//绑定ip及端口 Console.WriteLine("绑定端口ip"+this.ip+":"+this.port); server.Listen(10);//监听端口 Console.WriteLine("正在监听IP"+this.ip+" 端口:"+this.port+"......"); //Log.Errorname = "Info"; //Log.CreateLogTxt("监听Ip"+this.ip+"端口"+this.port+"......"); myThread = new Thread(ListenClientConnect); myThread.Start(); } private static void ListenClientConnect() { while (true) { client = server.Accept(); receiveThread = new Thread(ReceiveMessage); receiveThread.Start(client); } } /// <summary> /// 接收消息 /// </summary> /// <param name="clientSocket"></param> private static void ReceiveMessage(object clientSocket) { client = (Socket)clientSocket; while (true) { try { //通过clientSocket接收数据 int receiveNumber = client.Receive(result);//获取接收数据的长度 StreamWriter resultMessage = new StreamWriter("out.txt", true);//输出流实例化 resultMessage.WriteLine("接收客户端{0}消息{1}", client.RemoteEndPoint.ToString(), Encoding.ASCII.GetString(result, 0, receiveNumber)); resultMessage.Close(); //Log.Errorname = "Info"; //Log.CreateLogTxt("信息获取成功"); Console.WriteLine("有客户端发来信息: " + client.RemoteEndPoint.ToString()); string str ="hello,client!"; client.Send(Encoding.Default.GetBytes(str)); } catch (Exception ex) { //Log.Errorname = "ERROR"; //Log.CreateLogTxt("从服务器获取数据错误"+"错误信息"+ex.Message); Console.WriteLine("从服务器获取数据错误" + "错误信息" + ex.Message); client.Shutdown(SocketShutdown.Both); client.Close(); break; } } } static void Main(string[] args) { Program pg = new Program(); pg.port = 8999;//初始化端口 pg.ip = IPAddress.Parse("127.0.0.1");//初始化ip地址 pg.setConnection(); Console.WriteLine("========================="); } } }

    Client代码

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace client { /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { public void SendFile(string filename) { FileInfo fi = new FileInfo(filename); byte[] len = BitConverter.GetBytes(fi.Length); //首先把文件长度发送过去 socket.BeginSendFile(filename, len, null, TransmitFileOptions.UseDefaultWorkerThread, new AsyncCallback(SendFileCallback), null); } private void SendFileCallback(IAsyncResult iar) { socket.EndSendFile(iar); } Socket socket; public MainWindow() { InitializeComponent(); //创建一个Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //socket.Connect("192.168.14.2", 8885); socket.Connect("localhost", 8999); socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), socket); Console.WriteLine("connect to the server"); } static byte[] buffer = new byte[1024]; public void ReceiveMessage(IAsyncResult ar) { try { var socket2 = ar.AsyncState as Socket; var length = socket2.EndReceive(ar); var message = Encoding.Default.GetString(buffer, 0, length); Console.WriteLine("You got a message: " + message); socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), socket); } catch(Exception ex){ Console.WriteLine("Err:" + ex.Message); } } private void Button_Click_1(object sender, RoutedEventArgs e) { try { //byte[] buffer = Encoding.UTF8.GetBytes("utf-8"); byte[] buffer = Encoding.Default.GetBytes("utf-8"); int r = socket.Send(buffer); Console.WriteLine("Client sending message ACK to server"); } catch (Exception eee) { ; } //var message = "Message from client "; //var outputBuffer = Encoding.UTF8.GetBytes(message); //socket.BeginSend(outputBuffer, 0, outputBuffer.Length, SocketFlags.None, null, null); //this.SendFile( @"C:/" + textbox.Text); //this.SendFile(@"C:/s.bmp"); } } }

    UI界面xml代码

    <Window x:Class="client.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> <Button Content="发送" HorizontalAlignment="Left" Margin="333,215,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click_1"/> <TextBox x:Name="textbox" HorizontalAlignment="Left" Height="95" Margin="62,73,0,0" TextWrapping="Wrap" Text="Hello,Server" VerticalAlignment="Top" Width="313" RenderTransformOrigin="0.508,2.652"/> </Grid> </Window>

     

    最新回复(0)