网络编程新手求教..

awnuytnh 2009-10-27 01:51:32
现在在一个小公司里,正在参与一个项目,当然是新手,只能负责客户端的部分,本来已经做好了,是那种直连数据库的,可是后来突然要改变,要变成用网络通信的方式来获取信息,所以现在很茫然,自己对这方面真的是一点也不懂,希望大家帮帮忙,帮我渡过这个难关,BOSS给我简单讲解了一下,我大概理解为获取句柄->写报文->主动调用后发送->等待->接收->处理数据这么个过程,可是具体我怎么做一点也不清楚,比如怎么获取句柄等等,现在比如我想往服务器发送一条报文告诉它我需要什么,我应该怎么做,比如是在一个按扭的单击事件里,我应该怎么写呢,求专精这方面的人帮帮忙吧,真的是新手,挺着急的..
...全文
311 53 打赏 收藏 转发到动态 举报
写回复
用AI写文章
53 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangxin20090505 2009-10-30
  • 打赏
  • 举报
回复
这方面不大懂,帮顶一下了!
rizher 2009-10-29
  • 打赏
  • 举报
回复
也在学习类似的DD 顶下美女哈
hanzhaoever 2009-10-29
  • 打赏
  • 举报
回复
我是上次问你水晶报表的那个 现在问题还没有解决 希望你能加我Q304370607
powerchuangwai 2009-10-29
  • 打赏
  • 举报
回复
辛苦呀,我正在做类似的东西,,,有问题要说明确一些。
mydreamhuang 2009-10-29
  • 打赏
  • 举报
回复
UP!!!
awnuytnh 2009-10-29
  • 打赏
  • 举报
回复
继续研究中,有不会的再问大家哈...
萨拉嘿 2009-10-28
  • 打赏
  • 举报
回复
[Quote=引用 40 楼 awnuytnh 的回复:]
没打出红色,就是这些C# codebytes= c.Receive(recvBytes, recvBytes.Length,0);//从服务器端接受返回信息 recvStr+= Encoding.ASCII.GetString(recvBytes,0, bytes);
[/Quote]
将接受的信息分段string[] reg=recvStr.spilt('分割标识');
比如说接受的信息是Login|userid|password|
那reg[0]就是Login后面同理类推,这样可以根据接收信息的开头确定要进行的操作,这个是信息标识吧,不知道是不是你所说的那个报文
烈火蜓蜻 2009-10-28
  • 打赏
  • 举报
回复
还没有解决?
mjp1234airen4385 2009-10-28
  • 打赏
  • 举报
回复
楼主太新,我不知从和说起。
huoyingyangjie 2009-10-28
  • 打赏
  • 举报
回复
Boss?老板开什么车啊,想知道下。有些东西没你想的那么简单,既然你想了,那就变得简单了。
报文那只存在于网络层,既然到你客户端了,那么就没什么报文了,存在就是很直观的数据。首先你想从数据库获取内容,那肯定要发送SQL语句,至于服务单怎么处理那是他的事,但你要知道:
1.服务端是怎么发送数据的
2.编码最好用默认的(你不知道的话)
3.发送的是什么形式的数据,不可能就是字符串吧,比如table什么的,
4.你从服务端获取的信息,怎么处理,你得看你自己了,比如table那你就从中取出想要的数据
5.什么红色显示各个区域啊,那是很简单的问题。不要动脑子想的
吃饭。。。
mienfong 2009-10-28
  • 打赏
  • 举报
回复
顯示接收到的內容,就是Server送出的資料。

如果是字节我如何区分内容,比如里面有3段内容,每一段内容我要显示在不同的textbox里,我应该怎么区分?
這個你可以讓Server送出資料時,用某些記號(如用;)來表示要分割的內容,當看到記號是就分割。
it_gz_xi 2009-10-28
  • 打赏
  • 举报
回复
bytes = c.Receive(recvBytes, recvBytes.Length, 0);//将流转为字节数组
recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);//字节数组转为字符串

recvStr 这个字符串你要怎么分就看你的啦
Superbear263 2009-10-28
  • 打赏
  • 举报
回复
按你的代码,都是同步发送与接收的,那么这一接收,收到的就是全部的数据!
至于你的如何划分某几个字节是什么数据,那就是你的协议问题了,就是你的客户端是如何约定的了!
awnuytnh 2009-10-28
  • 打赏
  • 举报
回复
没打出红色,就是这些
bytes = c.Receive(recvBytes, recvBytes.Length, 0);//从服务器端接受返回信息
recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);
Console.WriteLine("client get message:{0}", recvStr);//显示服务器返回信息
awnuytnh 2009-10-28
  • 打赏
  • 举报
回复
这是客户端的一段代码,我有个地方不太清楚,看红色的部分,说是显示接收到的内容,那这个接收到的内容是什么,是收到的报文字节么?如果是字节我如何区分内容,比如里面有3段内容,每一段内容我要显示在不同的textbox里,我应该怎么区分?
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace Client
{
class Program
{
static void Main(string[] args)
{
try
{
int port = 2000;
string host = "127.0.0.1";
/**////创建终结点EndPoint
IPAddress ip = IPAddress.Parse(host);
//IPAddress ipp = new IPAddress("127.0.0.1");
IPEndPoint ipe = new IPEndPoint(ip, port);//把ip和端口转化为IPEndpoint实例

/**////创建socket并连接到服务器
Socket c = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建Socket
Console.WriteLine("Conneting…");
c.Connect(ipe);//连接到服务器

/**////向服务器发送信息
string sendStr = "hello!This is a socket test";
byte[] bs = Encoding.ASCII.GetBytes(sendStr);//把字符串编码为字节
Console.WriteLine("Send Message");
c.Send(bs, bs.Length, 0);//发送信息

/**////接受从服务器返回的信息
string recvStr = "";
byte[] recvBytes = new byte[1024];
int bytes;
bytes = c.Receive(recvBytes, recvBytes.Length, 0);//从服务器端接受返回信息
recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);
Console.WriteLine("client get message:{0}", recvStr);//显示服务器返回信息
/**////一定记着用完socket后要关闭
c.Close();
}
catch (ArgumentNullException e)
{
Console.WriteLine("argumentNullException: {0}", e);
}
catch (SocketException e)
{
Console.WriteLine("SocketException:{0}", e);
}
Console.WriteLine("Press Enter to Exit");
}
}
}
ch46485f 2009-10-28
  • 打赏
  • 举报
回复
不会也来顶下了
awnuytnh 2009-10-28
  • 打赏
  • 举报
回复
谢谢大家帮忙,我自己多试试,如果有不明白的希望还可以在这问大家,所以希望大家没事了能来看看,如果我有新问题的话希望大家能帮忙答一下...
chengzq 2009-10-28
  • 打赏
  • 举报
回复
帮楼主顶,可以不可以用MSMQ发消息啊。
Superbear263 2009-10-28
  • 打赏
  • 举报
回复
如果是用SOCKET进行与服务端的通信,那应该就比较好做啊!
.NET 有现成的SOCKET通信的示例,至少得在服务端开启SOCKET监听,客户端(你)也用SOKCET连接到服务端,只要你连接成功,就能发送数据,发送后只等待服务端的数据返回了。。。

具体的可以参与MSDN,这个上面绝对有你想要的! :)
是我111 2009-10-28
  • 打赏
  • 举报
回复
既然是socket 那就根据你们内部的协议发送信息
socket.Send(Encoding.ASCII.GetBytes(String str));
加载更多回复(33)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧