问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C#客户端和服务器端传递信息

发布网友 发布时间:2024-10-02 10:57

我来回答

4个回答

热心网友 时间:2024-11-13 09:37

//这是服务器端
#include<stdio.h>
#include<winsock2.h>
#include<string.h>
#include<conio.h>
#pragma comment(lib,"Ws2_32.lib")

SOCKET server;
SOCKET client;
WSADATA WSAData;
int WSAreturn;
sockaddr_in local;
sockaddr_in from;
int fromlen = sizeof(from);
char information[50];
char welcome[]="欢迎您登陆YYJW主机!\n";
char receive[256];
char ip[]="您的IP是:";
char chat[256];
char c;
int i=0;
bool cansend=false;
int GetIp()
{
WSAreturn = WSAStartup(0x101,&WSAData);
if(WSAreturn)
{
printf("发生一个未知错误!\n");
return 0;
}
local.sin_family = AF_INET;
local.sin_addr.s_addr = INADDR_ANY;
local.sin_port = htons((u_short)23);
server = socket(AF_INET,SOCK_DGRAM,0);
if(server==INVALID_SOCKET )
{
printf("无法创建套接字!\n");
return 0;
}
if(bind(server,(sockaddr *)&local,sizeof(local))!=0)
{
printf("无法绑定套接字!\n");
return 0;
}
//if(listen(server,5)!=0)
//{
//printf("无法监听端口!\n");
//return 0;
//}
while(true)
{
printf("正在等待用户连接...\n");
//client = accept(server,(struct sockaddr *)&from,&fromlen);
strcpy(information,inet_ntoa(from.sin_addr));
strcat(welcome,information);
printf("接受来自%s的连接...\n",inet_ntoa(from.sin_addr));
printf("正在发送欢迎消息...\n");
send(client,welcome,strlen(welcome),0);
//send(client,ip,strlen(ip),0);
//send(client,information,strlen(information),0);
printf("欢迎消息信息已经成功发送至客户端!\n");
while(1)
{
if(!cansend)
{

printf("正在等待对方发来消息...\n");
cansend=false;
recv(client,receive,sizeof(receive),0);

printf("*********接受到的消息***********\n");
printf("%s\n",receive);

printf("**************结束**************\n");
cansend=true;
}
else
{

printf("请输入下一条消息:");
scanf("%s\0",&chat);

send(client,chat,strlen(chat),0);
printf("\n已经成功发送出信息!\n");
cansend=false;
}
}

closesocket(client);

}
closesocket(server);
WSACleanup();
return 1;
}
void main()
{
int ok;

ok = GetIp();
if(ok==0)
printf("无法完成请求!\n");
getch();
}

//这是客户端
#include<stdio.h>
#include<winsock2.h>
#include<string.h>
#include<conio.h>
#pragma comment(lib,"Ws2_32.lib")
SOCKET client;
WSADATA WSAData;
int WSAreturn;
sockaddr_in to;
char information[256];
char welcome[]="我已经登陆到你的主机!\n";
char receive[256];
char chatto[256];
char servername[256];
char chatfrom[256];
char c;
long result;
bool cansend=true;
int connection()
{
WSAreturn = WSAStartup(0x101,&WSAData);
if(WSAreturn)
{
printf("发生一个未知错误!\n");
return 0;
}

client = socket(AF_INET,SOCK_DGRAM,0);
to.sin_family = AF_INET;
to.sin_port = htons(23);

while(true)
{
printf("请输入要登陆的IP:");
scanf("%s",&servername);

to.sin_addr.s_addr = inet_addr(servername);

printf("正在连接...\n");
result = connect(client,(struct sockaddr *)&to,sizeof(to));
if(SOCKET_ERROR==result)
{
// 连接失败
printf("对不起,无法连接到目标主机!\n");
WSACleanup();
return 0;
}

else
{

cansend=false;
recv(client,receive,sizeof(receive),0);
printf("*******欢迎消息消息*******\n");
printf("%s\n",receive);
printf("***********结束*********\n");
cansend=true;
while(1)
{

if(cansend)
{

printf("请输入下一条信息:");
scanf("%s\0",&chatto);

send(client,chatto,strlen(chatto),0);
printf("\n已经成功发送信息!\n");
cansend=false;
}
else
{

printf("正在等待对方发来消息...\n");
cansend=false;
recv(client,chatfrom,sizeof(chatfrom),0);

printf("*******接收到的消息*******\n");
printf("%s\n",chatfrom);
printf("***********结束*********\n");
cansend=true;
}

}

}

}
closesocket(client);
WSACleanup();
return 1;
}
void main()
{
connection();
getch();
}

热心网友 时间:2024-11-13 09:37

楼上的是c++的吧 服务器端: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.Threading;namespace test4_1{ public partial class Form1 : Form { Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); Socket client; byte[] bytes = new byte[1024]; delegate void listboxDel(string s); listboxDel listboxdel; public Form1() { InitializeComponent(); textBoxContent.Focus(); listboxdel = new listboxDel(listbox); Thread thread = new Thread(new ThreadStart(Listen)); thread.Start(); } public void listbox(string str) { listShow.Items.Add(str); listShow.SelectedIndex = listShow.Items.Count - 1; listShow.ClearSelected(); } //开始监听 private void Listen() { //获取IP地址,创建网络端点 string name = Dns.GetHostName(); IPAddress[] ipHostInfo = Dns.GetHostAddresses(name); //网络端点 IPEndPoint localEP = new IPEndPoint(ipHostInfo[0], 82); //处理用户连接请求 try { server.Bind(localEP); //绑定网络端口 server.Listen(10); //开始监听 AsyncCallback asyncCallback = new AsyncCallback(acceptCallback); server.BeginAccept(asyncCallback,server); } catch (Exception e) { MessageBox.Show(e.Message); } } //接受请求回调函数,并在该回调函数中调用接收数据 public void acceptCallback(IAsyncResult ar) { Socket server = (Socket)ar.AsyncState; //将返回的状态转换成为套接字(服务端套接字) client = server.EndAccept(ar); //异步处理连接请求,创建新的客户端套接字handler处理远程通信 listShow.Invoke(listboxdel, "客户端连接成功!"); //接收数据 client.BeginReceive(bytes ,0 ,1000 ,SocketFlags.None ,new AsyncCallback(readCallback),client); //调用回调函数传送的状态参数 } //接收数据回调函数 public void readCallback(IAsyncResult ar) { try { Socket handler = (Socket)ar.AsyncState; //将传递过来的接收状态转换成为socket实例 //结束挂起的接收操作,返回已读取的字节数 int read = handler.EndReceive(ar); listShow.Invoke(listboxdel, Encoding.UTF8.GetString(bytes, 0, read)); handler.BeginReceive(bytes, 0, 1000, SocketFlags.None,new AsyncCallback(readCallback),handler);//继续读取 } catch(Exception ex) { MessageBox.Show(ex.Message); } } private void send(string str) { byte[] sendbyte=Encoding.UTF8.GetBytes(str); client.BeginSend(sendbyte, 0, sendbyte.Length, SocketFlags.None, new AsyncCallback(sendCallBack), client); } private void sendCallBack(IAsyncResult ar) { Socket handler = (Socket)ar.AsyncState; int bytesSent = handler.EndSend(ar); listShow.Invoke(listboxdel, textBox1.Text + ":" + textBoxContent.Text); } private void buttonSend_Click(object sender, EventArgs e) { send(textBox1.Text + ":" + textBoxContent.Text); } }}客户端: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.Threading;namespace test4_2{ public partial class Form1 : Form { Socket connectSocket; //Socket client; byte[] bytes = new byte[1024]; delegate void listboxDel(string s); listboxDel listboxdel; public Form1() { InitializeComponent(); textBoxContent.Focus(); listboxdel = new listboxDel(listbox); //为连接指派线程 Thread threadConnect = new Thread(new ThreadStart(Connect)); threadConnect.Start(); } public void listbox(string str) { listBox1.Items.Add(str); listBox1.SelectedIndex = listBox1.Items.Count - 1; listBox1.ClearSelected(); } //连接方法 public void Connect() { try { //建立连接socket connectSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); //开始异步连接 connectSocket.BeginConnect(IPAddress.Parse("172.16.94.152"), 82, new AsyncCallback(ConnectCallback), //定义回调函数代理 connectSocket); //传递给回调函数的状态 } catch (Exception e) { MessageBox.Show(e.Message); } } //连接方法的回调函数 private void ConnectCallback(IAsyncResult ar) { try { //从传递的状态中获取套接字,创建一个客户端套接字 Socket client = (Socket)ar.AsyncState; //完成挂起的连接操作 client.EndConnect(ar); listBox1.Invoke(listboxdel, "连接服务器成功,可以开始通话!"); client.BeginReceive(bytes, 0, 1000, 0, new AsyncCallback(receivecallback), client); } catch (Exception e) { Console.WriteLine(e.ToString()); } } public void receivecallback(IAsyncResult ar) { try { Socket client = (Socket)ar.AsyncState; int length = client.EndReceive(ar); listBox1.Invoke(listboxdel, Encoding.UTF8.GetString(bytes, 0, length)); client.BeginReceive(bytes, 0, 1000, 0, new AsyncCallback(receivecallback), client); } catch { } } //发送方法 private void Send(String data) { //使用ASCII转换字符串为字节序列 byte[] byteData = Encoding.UTF8.GetBytes(data); //将字符串转换成字节序列 //开始向远端设备发送数据 connectSocket.BeginSend(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(SendCallback), connectSocket); } //发送方法的回调函数 private void SendCallback(IAsyncResult ar) { try { //从传递的状态中获取套接字,创建一个客户端套接字 Socket client = (Socket)ar.AsyncState; //结束异步数据传输操作,返回传输的字节数 int bytesSent = client.EndSend(ar); listBox1.Invoke(listboxdel, textBoxUser.Text +":"+ textBoxContent.Text); } catch (Exception e) { MessageBox.Show(e.ToString()); } } private void buttonSend_Click(object sender, EventArgs e) { Send(textBoxUser.Text+":"+textBoxContent.Text); } }} 0

热心网友 时间:2024-11-13 09:38

用隐藏控件吧 c/s我不清楚 b/s可以的 或者用ajax异步传下 这个比较好点

热心网友 时间:2024-11-13 09:38

喂 帅哥 用AJAX传吧 不会去买本书看 给你写很麻烦
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
自离后能补办离职证明吗? 我是家里自离的,可以补办辞职手续吗 急救!!!狗狗受凉吃什么就吐什么,该吃什么药 狗狗受凉呕吐吃什么药好得快 公告栏标题里的字如何设定字体及大小 公告栏怎移动啊 我的公告栏 如何设置 怎么让QQ拍拍公告栏文字不滚动 在滚动的公告栏中鼠标放上去时就停止,这种效果怎么做?谢谢了 王者荣耀铂金1和黄金3双排排到的是什么段位的 C# socket编程时 如何实现server端关闭了能提示Client端 在公交车上玩闹的两个小朋友作文怎么写? 如何鉴别描金老瓷器的真伪呢? oppo9oo7情景模式 C# socket编程,如何区分两个本地client(在同一台电脑上),使得两个clien... op### oo的*#800#是什么功能啊? 电脑风扇里面的灰尘怎么样才能清除干净 为什么只要是oppo手机就玩不了coc 侵权责任法借用车辆发生交通事故谁承担责任? 用photoshop扫描完后旋转画布90度,180度都可用,为哈"任意角度没法... 交通事故车主连带责任有哪些情形 租借车过错归车主的情形有哪些 微信朋友圈转发其他微友的文章总是发送失败。提示:照片发送失败;发送... 我在微信上发朋友圈,微友评论我的只要不是和我共同的微友看不到。那我... 请教一下,我如何把微信上面微友的信息和图片一起转发,谢谢 美国文化与中国文化的差别,三大最显著差别 微友发给我的doxc文件如何转发到朋友圈 有没有比较有个性的网名里面带童 微信接收小视频怎么发在朋友圈 微友聊天上的图片怎么传到自己朋友圈 怎么样可以拉肚子 ...上,自己却舍不得花,这些钱都是我自己挣得。 普通话证书的有效期是如何规定的? 春天常吃这些有助于宝宝长高 第6届上海电视节基本简介 ...儿童节祝福语简短一句话 六一儿童节句子简短 宝宝春季长高补钙吃什么? 第10届上海电视节基本简介 第16届上海电视节基本简介 为什么在播放音乐时会出现跳动的蓝色框? 降黄疸最有效的食物 开心一聚的心情短语 聚会很开心的句子 汽车改装排气尾段后,中段排气离油箱太近了,大概离油箱还有2厘米的距 ... 超五类网线能用在千兆网络吗? 超五类网线跟五类网线有哪些区别? 便秘严重怎么治疗 马车螺栓的分类及作用【紧固件】 畚斗是什么畚斗介绍 七彩神仙鱼用什么鱼缸好 帮我查一下张元台有没有叉车证