TCP/IP连接方式,向指定机器指定端口发送/接收程序 如题,感谢各位高人指点一二,若有相关例子,很是感激! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个..网上就太多了吧,给你一个传输文件的例子http://www.codeproject.com/internet/SocketFileTransfer.asp不过重要的还是两边的传输协议,服务端不是你写的话你还得去了解一下 这个只有看你具体情况了...发什么命令也只有你才知道啊.TCP Socket连接Server的基本操作: Create, Connect, Send, Receive那个里面都有 我做的个基于client&server的网络通信程序,针对你的问题给出发送函数的主代码,希望对你有所帮助.这里是发送图片.void CSendDlg::OnSend() { int i1 =192; int i2 =168; int i3 =1; int i4 =6;//6; char sIP[15]; sprintf(sIP, "%d.%d.%d.%d", i1,i2,i3,i4); SOCKET sock = socket(AF_INET, SOCK_STREAM, 0);//创socktet 套接字 Li+ SOCKADDR_IN sin; //SOCKADDR_IN 结构用来标识 TCP/IP 协议下的地址 sin.sin_family = AF_INET; // 必须为AF_INET,表示处于internet域 sin.sin_addr.s_addr = inet_addr(sIP); // 把一个点式的IP表示成一个32位的无符号长整数 sin.sin_port = htons(7000);//端口7000 指定服务端口 // connect 创建一个端对端的连接 ,客户向服务进程发出连接请求 if(connect(sock, (SOCKADDR*)&sin, sizeof(sin)) != SOCKET_ERROR) { //char sSendBuf[SENDSIZE]; MSGREQUEST msgRequest; // 文件结构 msgRequest.lFileOffset = 0; msgRequest.lFileLength = 0; CFile file; file.Open("221.bmp",CFile::modeRead|CFile::shareDenyNone, NULL); msgRequest.lFileLength =file.GetLength(); int filelength =file.GetLength(); char *sSendBuf; sSendBuf =new char[filelength]; // 当客户机的套接字接受到服务器发出的接受信号,则表示客户机于服务器已经连接,可以进行传输 int iSendCnt = send(sock, (char*)&filelength,filelength, 0); long lFileOffset = msgRequest.lFileOffset; int iReadCnt = file.Read(sSendBuf, filelength); if(iReadCnt ==0) { AfxMessageBox("erroe"); } iSendCnt = send(sock, sSendBuf, iReadCnt, 0); //如果发送失败就终止线程 if(iSendCnt == -1) { AfxMessageBox("error"); } else { AfxMessageBox("over"); } }} 连线成功(代码如下): try { TcpClient tcpClient = new TcpClient(sHostName,nPortNo nsStream = tcpClient.GetStream();//通过申请,并获取传送数据的网络基础数据流 swWriter = new StreamWriter(nsStream);//使用获取的网络基础数据流来初始化StreamWriter实例 srRead = new StreamReader(nsStream);//以得到的网络基础数据流来初始化StreamReader实例 btnConnect.Enabled = false ; btnSend.Enabled = true ; tcpConnect = true ; sbStatus.Text = "已经连接!" ; iSeqNo = 1; } catch { MessageBox.Show ( "无法和远程主机端口建立连接!" , "错误提示!" ) ; return ; }发送接收代码(发送成功,接收不了): swWriter.WriteLine(edtInfo.Text);//刷新当前数据流中的数据 swWriter.Flush(); sbStatus.Text = "发送成功,已经连接!"; Thread.Sleep(300); string sMessage = srRead.ReadLine();//从网络基础数据流中读取一行数据 string sTime = DateTime.Now.ToShortTimeString ( ) ; //获取接收数据时的时间 lbReceive.Items.Add ( sTime + " " + sMessage ) ; sbStatus.Text = "接收成功,已经连接!"; (发送成功,接收不了):垦请高手指正代码。 CEdit接收回车键的问题 求将第三方开发包融入到MFC里面的方法 如何屏蔽对话框中的鼠标事件(得到答案就结帖,谢谢了) 最近完成了一个“识别看看”文字识别软件,大家觉得这个软件目前价值多少? 怎样调用windows的碎片整理程序?在线等待。 数据传递与显示问题? CString型变量如何在excombo box中显示?(类型转换错误) 求助大神 简单的代码注入 无法获得图标句柄(50分相送)急急急急急急!!!!!! 对话框的启动消息 已知管理员密码的情况下,能否抓取局域网内其它电脑的配置? 各位这段代码,你们编译的能过吗
http://www.codeproject.com/internet/SocketFileTransfer.asp不过重要的还是两边的传输协议,服务端不是你写的话你还得去了解一下
发什么命令也只有你才知道啊.TCP Socket连接Server的基本操作: Create, Connect, Send, Receive那个里面都有
{
int i1 =192;
int i2 =168;
int i3 =1;
int i4 =6;//6;
char sIP[15];
sprintf(sIP, "%d.%d.%d.%d", i1,i2,i3,i4); SOCKET sock = socket(AF_INET, SOCK_STREAM, 0);//创socktet 套接字 Li+
SOCKADDR_IN sin; //SOCKADDR_IN 结构用来标识 TCP/IP 协议下的地址
sin.sin_family = AF_INET; // 必须为AF_INET,表示处于internet域
sin.sin_addr.s_addr = inet_addr(sIP); // 把一个点式的IP表示成一个32位的无符号长整数
sin.sin_port = htons(7000);//端口7000 指定服务端口 // connect 创建一个端对端的连接 ,客户向服务进程发出连接请求
if(connect(sock, (SOCKADDR*)&sin, sizeof(sin)) != SOCKET_ERROR)
{
//char sSendBuf[SENDSIZE];
MSGREQUEST msgRequest; // 文件结构
msgRequest.lFileOffset = 0;
msgRequest.lFileLength = 0; CFile file;
file.Open("221.bmp",CFile::modeRead|CFile::shareDenyNone, NULL);
msgRequest.lFileLength =file.GetLength();
int filelength =file.GetLength(); char *sSendBuf;
sSendBuf =new char[filelength];
// 当客户机的套接字接受到服务器发出的接受信号,则表示客户机于服务器已经连接,可以进行传输
int iSendCnt = send(sock, (char*)&filelength,filelength, 0);
long lFileOffset = msgRequest.lFileOffset; int iReadCnt = file.Read(sSendBuf, filelength);
if(iReadCnt ==0)
{
AfxMessageBox("erroe");
} iSendCnt = send(sock, sSendBuf, iReadCnt, 0);
//如果发送失败就终止线程
if(iSendCnt == -1)
{
AfxMessageBox("error");
}
else
{
AfxMessageBox("over");
}
}
}
try
{
TcpClient tcpClient = new TcpClient(sHostName,nPortNo
nsStream = tcpClient.GetStream();//通过申请,并获取传送数据的网络基础数据流
swWriter = new StreamWriter(nsStream);//使用获取的网络基础数据流来初始化StreamWriter实例
srRead = new StreamReader(nsStream);//以得到的网络基础数据流来初始化StreamReader实例
btnConnect.Enabled = false ;
btnSend.Enabled = true ;
tcpConnect = true ;
sbStatus.Text = "已经连接!" ;
iSeqNo = 1;
}
catch
{
MessageBox.Show ( "无法和远程主机端口建立连接!" , "错误提示!" ) ;
return ;
}发送接收代码(发送成功,接收不了):
swWriter.WriteLine(edtInfo.Text);//刷新当前数据流中的数据
swWriter.Flush();
sbStatus.Text = "发送成功,已经连接!";
Thread.Sleep(300);
string sMessage = srRead.ReadLine();//从网络基础数据流中读取一行数据
string sTime = DateTime.Now.ToShortTimeString ( ) ; //获取接收数据时的时间
lbReceive.Items.Add ( sTime + " " + sMessage ) ;
sbStatus.Text = "接收成功,已经连接!"; (发送成功,接收不了):垦请高手指正代码。