基于socket的客户端和服务端聊天机器人
服务端代码如下:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Windows.Forms;
namespace Client
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//对 Windows 窗体控件进行线程安全调用
RichTextBox.CheckForIllegalCrossThreadCalls = false;
}
private Socket serverSocket;
/// <summary>
/// 服务端开启监听
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
int port = 6000;
string host = "127.0.0.1";
IPAddress ip = IPAddress.Parse(host);
IPEndPoint ipe = new IPEndPoint(ip, port);
Socket sSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sSocket.Bind(ipe);
sSocket.Listen(100);
ParameterizedThreadStart par = ServerListenMethod;
Thread thread = new Thread(par);
thread.Start(sSocket);
}
public void ServerListenMethod(object sSocket)
{
while (true)
{
Socket serSocket = ((Socket)sSocket).Accept();
ParameterizedThreadStart p = ServerCommunicationMethod;
Thread t = new Thread(p);
t.Start(serSocket);
}
}
public void ServerCommunicationMethod(object sSocket)
{
serverSocket = (Socket)sSocket;
string recStr = "";
//创建内存缓存区
byte[] recByte = new byte[1024 * 1024 * 5];
while (true)
{
int bytes = serverSocket.Receive(recByte, recByte.Length, 0);
recStr = Encoding.Default.GetString(recByte, 0, bytes);
this.richTextBox1.AppendText("服务器端获得信息:" + recStr);
}
}
/// <summary>
/// 服务端发送消息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
var str = this.textBox1.Text;
this.textBox1.Text = "";
byte[] sendByte = Encoding.Default.GetBytes(str);
serverSocket.Send(sendByte, sendByte.Length, 0);
this.richTextBox1.AppendText("服务器端发送信息:" + str);
}
}
}
服务端启动如图:
----------------------------------------------------------------------------------------------------------------------
客户端代码如下:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Windows.Forms;
namespace Servers
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//对 Windows 窗体控件进行线程安全调用
RichTextBox.CheckForIllegalCrossThreadCalls = false;
}
private Socket clientSocket;
/// <summary>
/// 客户端发送消息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BtnMsg_Click(object sender, EventArgs e)
{
var str = this.textBox1.Text;
clientSocket.Send(Encoding.Default.GetBytes(str));
this.richTextBox1.AppendText("客户端发送信息:" + str);
this.textBox1.Text = "";
}
/// <summary>
/// 建立连接
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
int port = 6000;
string host = "127.0.0.1";
IPAddress ip = IPAddress.Parse(host);
IPEndPoint ipe = new IPEndPoint(ip, port);
clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
clientSocket.Connect(ipe);
ThreadStart start = ClientListenMethod;
Thread t = new Thread(start);
t.Start();
}
public void ClientListenMethod()
{
//创建内存缓存区
byte[] recByte = new byte[1024 * 1024 * 5];
while (true)
{
int bytes = clientSocket.Receive(recByte, recByte.Length, 0);
string recStr = Encoding.Default.GetString(recByte, 0, bytes);
this.richTextBox1.AppendText("客户端端获得信息:" + recStr);
}
}
}
}
客户端启动如图:
注:如果需要项目源代码,可以发1870902607@qq.com邮箱告诉我,我会将项目源代码发给你。
----分享不仅帮助了别人,同时也提升了自己。luchao_it
基于socket的客户端和服务端聊天机器人的更多相关文章
- 基于socket的客户端和服务端聊天简单使用 附Demo
功能使用 服务端 分离一个不停接受客户端请求的线程 接受不客户端请求的线程中,再分离就收消息的线程 几大对象分别是 IPEndPoint IP终结点 服务端Socket,绑定终结点Bind,启动监听L ...
- 基于socket.io客户端与服务端的相互通讯
socket.io是对websocket的封装,用于客户端与服务端的相互通讯.官网:https://socket.io/. 下面是socket.io的用法: 1.由于使用express开的本地服务,先 ...
- c++ 网络编程(一)TCP/UDP windows/linux 下入门级socket通信 客户端与服务端交互代码
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9601511.html c++ 网络编程(一)TCP/UDP 入门级客户端与服务端交互代码 网 ...
- 实验09——java基于TCP实现客户端与服务端通信
TCP通信 需要先创建连接 - 并且在创建连接的过程中 需要经过三次握手 底层通过 流 发送数据 数据没有大小限制 可靠的传输机制 - 丢包重发 包的顺序的 ...
- 用PHP的socket实现客户端到服务端的通信
服务端 <?php error_reporting(E_ALL); set_time_limit(0); ob_implicit_flush(); //本地IP $address = 'loca ...
- Python socket编程客户端与服务端通信
[本文出自天外归云的博客园] 目标:实现客户端与服务端的socket通信,消息传输. 客户端 客户端代码: from socket import socket,AF_INET,SOCK_STREAM ...
- Socket通信客户端和服务端代码
这两天研究了下Socket通信,简单实现的客户端和服务端代码 先上winfrom图片,客户端和服务端一样 服务端代码: using System; using System.Collections.G ...
- C# Winform 通过Socket实现客户端和服务端TCP通信
操作界面如下: 1.声明Socket 第一个参数:寻址方式,第二个参数:传输数据的方式,第三个参数:通信协议 Socket socket = new Socket(AddressFamily.Inte ...
- 在Java中使用Socket模拟客户端和服务端(多线程)
1:Socket与ServerSocket的交互 2.Socket和ServerSocket介绍 Socket 构造函数 Socket() Socket(InetAddress address, in ...
随机推荐
- panguan(判官):一个自研的任务执行引擎的工程实践
来某厂接近半年了,几乎没写过C++代码,说实话还真的有点手生.最近刚好有一个需求,然而我感觉我也没有办法用C++以外的语言去实现它.于是还是花了几天时间用C++完成编码,这是一个简单的任务执行引擎,它 ...
- 【程序与资源】linux程序与资源管理
程序与资源管理:ps.top.free.sar.kill.uname ①ps语法: [root @test /root ]# ps -aux 参数说明: a :选择所有的程序列出 u :所有使 ...
- 学习练习 java面向对象梯形面积
package com.hanqi; public class Ladder { double ShangDi; double XiaDi; double Gao; double MianJi; La ...
- ASPxGridView中如何对主从表绑定数据
注:在从表的aspxgridview中的(OnDataBinding()事件中绑定数据)-----代码如下 //绑定属性值表protected void grid2_sonTable_DataBind ...
- mongodb replica set(副本集)设置步骤
网上已经有一大堆的设置步骤的了,根据我遇到的问题,整理一下,如下: 首先先去下载一个mongodb最新版,目前最新版应该是2.6 cd /usr/local/bin wget http://fastd ...
- 关于TCP协议握手的那些事儿
旁白 今天面了下鹅场的后台技术开发,面试官问了我关于TCP连接协议的3次握手和断开连接协议的4次握手的问题.因为之前看过TCP的连接和断开处理,但是印象没有那么深刻.我想主要原因是一直重复简单的记忆, ...
- Oracle笔记 十、PL/SQL存储过程
--create or replace 创建或替换,如果存在就替换,不存在就创建 create or replace procedure p is cursor c is select * from ...
- WP_3种磁贴效果设置
private void ApplicationBarIconButton_Click_1(object sender, EventArgs e) { var tileData = new FlipT ...
- hdu1505
the main algorithm as the 1506 #include <stdio.h> #include <iostream> #include <strin ...
- Longest Common Prefix [LeetCode 14]
1- 问题描述 Write a function to find the longest common prefix string amongst an array of strings. 2- 思路 ...