java socket客户端和Python socket客户端的不同?高C币!!

我们接的项目有一个java写的server,我只有它的文档,并且用java已经实现,但是现在要为
python实现,用java实现的代码:

 public static void main(String[] args) throws WindException,   SendException, RecvException{
String host="172.22.128.16";
int port=6001;
TcpComm tcp = new TcpComm(true);
try {
    tcp.call(host,port);
    tcp.setTimeOut(30);
    String msg="POF001|S2B024|01|0033596105||";
    byte[] req = msg.getBytes();
    tcp.sendMsg(req);
    byte[] ans = tcp.recvBytesMsg();
    System.out.println(ans);
} catch (CallException e) {
    e.printStackTrace();
}

接口就是使用socket发送一个定制的代表内容长度的报文头和内容,sendMsg方法:

 public void sendMsg(byte[] b) throws SendException {
        try {
            OutputStream out = sock.getOutputStream();
            if (hasAtrHead) {
                byte[] sbt = short2Byte((short) b.length, true);
                out.write(head);
                out.write(sbt);
            }
            out.write(b);
            out.flush();
        }

其中hasAtrrHead使用的是true,定制报文头的方法:

 static public byte[] short2Byte(short value, boolean order) {
        byte[] bt = new byte[2];
        if (order) { // true 高8位 存放在tb[0]
            bt[0] = (byte) (value >> 8 & 0xff);
            bt[1] = (byte) (value & 0xff);
        } else {
            bt[1] = (byte) (value >> 8 & 0xff);
            bt[0] = (byte) (value & 0xff);
        }
        return bt;
    }

使用以上java代码运行没问题,但是当我用python写的时候,发送的socket没有被server接收到,应该是发送的格式不对,python代码:

 #-*- coding:GBK -*-
import socket
class Comm(object):
    def heads(self,length):
        bt=bytearray()
        bt.append(length >> 8 & 0xff)
        bt.append(length & 0xff)
        return bt
    def client(self):
        HOST='172.22.128.16'
        PORT=6001
        s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        s.connect((HOST,PORT))       
        while 1:
            content='POF001|F2B107|01|3061009458||'
            length=len(content)
            head=self.heads(length)
            content=bytearray(content)
            s.send(head)
            s.send(content)
            data=s.recv(2048)    
        s.close()

if __name__=='__main__':
    a=Comm()
    a.client()

有人能告诉我到底是哪里不同吗?折腾两天了,求解答!!!

3个回答

问题已被自己解决,python中如直接转化数字为byte为4个字节,如需两个字节的网络序byte,需使用struct.pack('!h',x)

你python中content是字符串 而java发送的是byte字节数组 你需要转换一下再发送

abcdmn3721
abcdmn3721 已经转换了啊,用的bytearray
3 年多之前 回复

问题已被自己解决,python中如直接转化数字为byte为4个字节,如需两个字节的网络序byte,需使用struct.pack('!h',x)

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Socket客户端的问题...
小弟刚刚接触VC,现在需要写一个VC的程序,去给一个Socket Server发一点测试数据。小弟做个一个对话框,上面有一个按钮,想点击这个按钮,就向Socket Server发一条测试数据。rn代码是这样写的,可是有问题,请指导一下小弟。rnrnrn编译的时候就报错:rnClientDlg.cpp(212) : error C2228: left of '.Create' must have class/struct/union typernClientDlg.cpp(213) : error C2228: left of '.Connect' must have class/struct/union typernClientDlg.cpp(215) : error C2228: left of '.Send' must have class/struct/union typernrnrnrn代码如下:rnrn#include rn#include"winsock.h"rn#pragma comment(lib,"wsock32")rnrnrn...rnrnrnvoid CClientDlg::OnConnect() rnrnrn // TODO: Add your control notification handler code herernrn if (!AfxSocketInit())rn rn AfxMessageBox("Socket 初始化失败!");rn return;rn rnrn SOCKET sock = socket(AF_INET, SOCK_STREAM, 0);//,newsock;rn sock.Create();rn sock.Connect("192.168.0.100",8086);rn char buf[]="Test";rn sock.Send(buf,sizeof(buf));rnrnrnrn能帮小弟改一下吗??
socket客户端的问题。
我想写一个socket的客户端。rn连接已经写好,可是不知道怎么收、发数据。rn代码如下,请哪位高手指点一下。rnrnusing System;rnusing System.Collections.Generic;rnusing System.ComponentModel;rnusing System.Data;rnusing System.Drawing;rnusing System.Linq;rnusing System.Text;rnusing System.Windows.Forms;rnusing System.Net;rnusing System.Net.Sockets;rnusing System.Threading;rnrnnamespace testclientrnrn public partial class Form1 : Formrn rn public Form1()rn rn InitializeComponent();rn rnrn Socket client;rn Thread th1;rn private void Form1_Load(object sender, EventArgs e)rn rn string pcname = Dns.GetHostName();rn IPAddress[] ip = Dns.GetHostAddresses(pcname);rn textBox5.Text = Convert.ToString(ip[0]);rn textBox1.Text = "192.168.0.99";rn textBox2.Text = "81";rn button2.Enabled = false;rn rnrn private void button1_Click(object sender, EventArgs e)rn rn client = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);rn th1 = new Thread(new ThreadStart(start));rn th1.IsBackground = true;rn th1.Start();rn button1.Enabled = false;rn button2.Enabled = true;rn rn private void start()rn rn tryrn rn IPAddress ip = IPAddress.Parse(this.textBox1.Text);rn int port = Convert.ToInt32(this.textBox2.Text);rn IPEndPoint IEp = new IPEndPoint(ip, port);rnrn tryrn rn client.Connect(IEp);rn rn catchrn rn MessageBox.Show("服务器端未开启连接,请联系系统管理员");rn rn rn catchrn rn MessageBox.Show("您输入的IP无效请重新输入");rn rnrnrn if (client.Connected)rn rn MessageBox.Show("连接成功可以开始通讯!");rn rn rnrn private void button2_Click(object sender, EventArgs e)rn rn tryrn rn string str = textBox3.Text;rn ASCIIEncoding ascii = new ASCIIEncoding();rn byte[] msg = ascii.GetBytes(str);rn client.Send(msg);rn rn catchrn rn MessageBox.Show("没有连接或命令输入错误!"); rn rn rn rnrn private void Form1_FormClosed(object sender, FormClosedEventArgs e)rn rn th1.Abort();rn rn rnrn
socket实现广播和客户端到客户端的通信
通过Socket和多线程实现广播和客户端到客户端的通信,私聊时有离线消息。 1.服务器端 [code="java"] package com.gjy.socket; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.i...
求教关于python socket客户端的问题
服务器端是使用Java mina2.0写的,发包规则要求先发送字符串长度的字节流,在发送内容的字节流,初学python,搞了好久都没搞定,求高手指教!!!!
客户端的socket接收线程
我想在建立客户端连接服务器后建立一个独立的线程来接收数据rn1,如何设计这个线程rn2,是否要设置为非堵塞模式
关于Socket客户端的问题
我做发Socket通信的客户端程序,输入服务器和端口号,单击"接收"按钮就可以接收从服务器发来的消息,但是不知道为什么在客户端上没有连接成功,在服务器端侦听都没问题,在接收中的代码如下,烦请高人指点,谢谢!!rnUpdateData();rn CAsyncSocket receive;rn if(!receive.Create())rn rn MessageBox("创建失败","Receive",MB_ICONSTOP);rn return;rn rn elsern if(!receive.Connect(m_Addr,m_nPort))rn rn MessageBox("连接失败","Connect",MB_ICONSTOP);rn rn char sReceive[1024];rn memset(sReceive,0,1024);rn receive.Receive(sReceive,1024,0);rn m_strMsg=sReceive;rn UpdateData(FALSE);rn receive.Close();
如何区分客户端的Socket
多个客户端同时连接服务器,如何区分客户端的Socket?
socket客户端的几个疑点
C/S模式下点对多。客户端是怎么接收来自服务器不定时指令的。rn我想实现就是像qq弹窗那样的效果,服务器不定时向客户端发送指令,客户端却是不知如何接受。rn想了几个思路,求大牛指点指点。rn1:客户端socket异步接收,根据接收到的服务器指令完成与服务器的交互。比如客户端a向服务器发送指令x 服务器将指令x发给客户端b。疑点:异步接收如何接受。假如b先向服务器发送指令y,服务器回复指令z,但x比z先到达,会不会产生什么严重的后果。rn2:客户端与服务器建立三个连接。一个连接保持与服务器的长连接。一个连接实现与服务器同步通信。一个连接异步接收服务器的指令,实现客户端之间交互。疑点:这样一来服务器负担翻了三番,同时也不知道如何在服务器端区分同一个客户端的三个连接那个是哪个。rn3:客户端做成一个简单服务器端,检测端口侦听来自四面八方的连接请求。疑点:客户端的ip不固定。
socket客户端的编程步骤
一、请求版本号 1、首先定义一个结构体对象 WSADATA wsaData; 关于WSADATA结构体 struct WSAData {   WORD wVersion;   WORD wHighVersion;   char szDescription[WSADESCRIPTION_LEN+1];   char szSystemStatus[WSASYSSTATUS_LEN+1];   unsi...
socket服务器和客户端的编程
就是使用Linux编程的客户端和服务端的程序!
socket服务器端与客户端的连接
我在本机做了一个服务器端,与本机的客户端进行通讯。如果我发的字符串是在客户端应用程序中的事先写好的,服务器端不能接受到。但若是从屏幕中现写的却可以接受。rn程序如下:rn//////////////////服务器端/////////////////////////////rnimport java.net.*;rnimport java.io.*;rnimport java.lang.*;rnrnpublic class Myserve1rnpublic static void main(String args[])rnServerSocket server;rnSocket socket;rnString s;rnInputStream Is;rnOutputStream Os;rnDataInputStream DIS;rnPrintStream PS;rnrntryrn//在端口4321注册服务rnserver=new ServerSocket(4321);rnsocket=server.accept();//监听窗口,等待连接rnrnSystem.out.println("server ok");rnSystem.out.println("************************************************");rnSystem.out.println("");rnrn//获得对应Socket的输入/输出流rnIs=socket.getInputStream();rnOs=socket.getOutputStream();rn//建立数据流rnwhile (true)rnDIS=new DataInputStream(Is);rnPS=new PrintStream(Os);rnSystem.out.println("");rnSystem.out.println("please wait client`s message...");rnSystem.out.println("");rns=DIS.readLine(); //读入从client传来的字符串rnSystem.out.println("client said:"+s); //打印字符串rnrnrncatch(Exception e)rnSystem.out.println("Error:"+e);rnrnrn rn//////////////////////客户端/////////////////////rnimport java.io.*;rnimport java.net.*;rnpublic class Stringoutputrn public static void main(String a[])rn String b="";rntry rn Socket s = new Socket("10.21.5.18",4321); rnSystem.out.println("client ok");rnSystem.out.println("************************************************");rnSystem.out.println("");rn DataInputStream servein;rn BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));//读取SOCKET的输入,把byte节转化为char rn PrintWriter pw = new PrintWriter(new OutputStreamWriter(s.getOutputStream()));//输出rn System.out.println("start reliease:");rn pw.println(b); //写rn System.out.println("now ready go");rnDataInputStream in=new DataInputStream(System.in);rnSystem.out.print("you say:");rnString ss=in.readLine(); //读取用户输入的字符串rnpw.println(s); //将读取得字符串传给serverrnservein=new DataInputStream(s.getInputStream());rnss=servein.readLine();rnSystem.out.println("cliend read:"+ss);rnrnpw.close();rnbr.close();rnin.close();rncatch (UnknownHostException e) rn System.out.println("UnkownHostException e");rncatch (IOException e) rn System.out.println("IOException e");rn rnrn rnrn
用Java 的socket实现客户端的功能
我想用java 实现一个客户端,利用TCP/IP协议向远程的已经存在的服务器发送,和接收数据该怎么实现?也就是说服务器端给我了Ip地址和端口号,我写个程序和它连接,向它发送数据同时也要接收服务器发回来的数据。请问各位大牛这个该怎么实现?最好有源代码,没源代码说下思路也可以,谢谢了!
socket的服务端和客户端的建立
服务端:my_sverce.c 步骤:1、创建一个套接字socket():包括初始化struct socketaddr_in结构体的填充            2、绑定bind()服务端的地址            3、监听listen()             4、accept()确认 #include<stdio.h> #include <sys/types....
java Socket 的服务端和客户端的使用
Main.java 发送端package com.company;import com.company.thread.myThread1; import com.company.thread.myThread2; import com.company.thread.receiveThread; import com.company.thread.sendThread;import java.io.I
java socket 多线程的服务端与客户端的demo
java socket 多线程 服务端 客户端
C客户端JAVA服务端Socket
记录一下服务器代码,之前写的收不到客户端传来的数据,C客户端一直向服务器发送消息 package t; import java.io.*; import java.net.*; public class Server {     public static void main(String[] args) {         try {             ServerSocket...
java Server端与Python客户端的Socket交互
今天做了一个不同语言之间 C/S 的socket通讯实验,  还是发现了在不同语言间的问题. :) 服务器端 package p1; import java.io.IOException;import java.net.ServerSocket; public class C1 {  private ServerSocket ss;  public C1() {  try {   in...
socket的客户端和服务端的问题
我弄了两个最简单的客户端和服务端连接的程序,用C写的,但是总是不成功,我是这样做的,把客户端的程序写在一个程序里,把服务端的写在一个程序里,然后在同一台机器上分别运行,但是总是出不来我想要的东西,不是出10048就是10049,有时侯干脆什么都没有了,我不知道我这样做对不对,应该怎么弄呢?我就是想做个小测试,我设的客户端访问的ip是127.0.0.1,端口号随便写了一个。
JAVA写的SOCKET和C的请求客户端的通信问题
您好:rn最近由于一个项目的需要,客户端发送一个请求数据,服务端接受以后根据数据做出不同的回。我用java写了一个服务端,请求方为C语言写的,我的服务端程序启动以后,一直处在等待状态没有任何的反映:接受不到请求发来的数据,客户端也接受不到我的回应。而且不报任何异常,问题是,我用JAVA写了一个客户端测试代码却一切正常,麻烦大哥给指点一二。谢谢,我写的服务器端代码和做测试用的客户端代码如下:rnrnrnSERVER:rnimport java.net.*;rnimport java.io.*;rnclass testserver1 implements RunnablernrnSocket s;rnpublic testserver1(Socket s)rn rnthis.s=s;rnrnpublic void run()rn tryrn InputStream ips=s.getInputStream();rn OutputStream ops=s.getOutputStream();rn BufferedReader br=new BufferedReader(new InputStreamReader(ips));rn DataOutputStream dos=new DataOutputStream(ops);rn PrintWriter out;rn while(true)rn System.out.println("已进入循环!!"); rn String strword=br.readLine();rn //br.flush();rn System.out.println(strword);rn //if(strword.equalsIgnoreCase("quit"))rn // break;rn //String strecho=(new StringBuffer(strword).reverse()).toString();rn//////////////以下代码由于我怀疑是IO的原因,所以我用了各种输出形式结果失败rn dos.writeBytes("Init_ok1"+"\n");//回应1rn System.out.println("已成功回应了1"); rn //dos.flush();rn ops.write("Init_ok2".getBytes());//回应2rn ops.flush();rn System.out.println("已回应了2"); rn out = new PrintWriter(ops,true);rn out.println("Init_ok3"+"\n"); //回应3rn System.out.println("已回应了3"); rn out.flush();rn out.close(); rn break;rn //destroy();rn //stop();rn rn br.close();rn dos.close();rn s.close();rnrn catch(NoRouteToHostException ex3) //无法到达远程主机,原因是防火墙干扰或者中间路由器停机。rnrn tryrn InputStream ips=s.getInputStream();rn OutputStream ops=s.getOutputStream();rn BufferedReader br=new BufferedReader(new InputStreamReader(ips));rn DataOutputStream dos=new DataOutputStream(ops);rn dos.writeBytes("Init_Fail");rn rn catch(Exception xe)rn ex3.fillInStackTrace();rn System.out.println("failed");rn rn rn catch(SocketTimeoutException e2) //处理超时异常rn rn tryrn InputStream ips=s.getInputStream();rn OutputStream ops=s.getOutputStream();rn BufferedReader br=new BufferedReader(new InputStreamReader(ips));rn DataOutputStream dos=new DataOutputStream(ops);rn dos.writeBytes("Init_Fail--->out_times");rn rn catch(Exception xe)rn e2.fillInStackTrace();rn System.out.println("failed");rn rn rncatch(SocketException e1) //处理底层协议异常rn tryrn InputStream ips=s.getInputStream();rn OutputStream ops=s.getOutputStream();rn BufferedReader br=new BufferedReader(new InputStreamReader(ips));rn DataOutputStream dos=new DataOutputStream(ops);rn dos.writeBytes("Init_Fail-->xieyicuowu");rn rn catch(Exception xe)rn e1.fillInStackTrace();rn System.out.println("failed");rn rn rncatch(Exception e3)rn tryrn InputStream ips=s.getInputStream();rn OutputStream ops=s.getOutputStream();rn BufferedReader br=new BufferedReader(new InputStreamReader(ips));rn DataOutputStream dos=new DataOutputStream(ops);rn dos.writeBytes("Init_Fail");rn rn catch(Exception xe)rn xe.fillInStackTrace();rn rn e3.printStackTrace();rn System.out.println("failed");rn rnrn rnrn class testserver2rn public static void main(String arsgs[])rn tryrn ServerSocket ss=new ServerSocket(20000);rn while(true)rn System.out.println("Waiting for conncetion..."); rn Socket s=ss.accept();rn System.out.println("已经接受到请求连接"); rn new Thread(new testserver1(s)).start();rn rn rn catch(Exception e)rn rn e.printStackTrace();rn rnrnrnrnrn注请求的客户端的C代码我还没有见,是别人写的。写C的那个人说,他用C写了一个服务器端的代码来测试他的请求客户端,结果是正常的,我都晕了。。。。。。。。请教大哥
Python socket 发送数据到客户端
如果服务器的脚本A收到了来自客户端X1的POST请求,现在A通过进程通信把X1的POST数据和X1的IP以及端口给了进程B之后,自己不管了.进程A和B完全独立.那么,进程B处理完后不通知A的情况下如何根据返回数据给X1并关闭和X1的连接呢.rn结构如下:rn[img=https://img-bbs.csdn.net/upload/201612/07/1481100843_190790.png][/img]rnrn虽然上述可以放到一个脚本通过多进程实现,但是拆成两个单独进程怎么实现呢.rn其实,rn [color=#FF0000][size=24px][b]问题本质是两个独立的进程怎么互相传递Socket对象呢[/b][/size][/color]
python socket客户端
python socket客户端
JAVA SOCKET与C SOCKET互连
我同事做了一JAVA的客户端,发送数据包。JAVA的服务器端接收数据。可以实现数据通信rn 我用LINUX C 做了SOCKET的服务器端——接收数据,客户端——发送数据。也可以实现数据通信。rn rn 可是C语言和JAVA语言的客户端与服务器端却不能交叉通信。rn 以上的IP和PORT都设置正确。JAVA运行在WINDOWS2000上。C运行在LINUX上。rn rn 谁对能给点意见?怎么样能让他们彼此通信?rn
java socket 和 c socket 通信
java 为客户端rnc 为服务端rnrnrnjava 客户端代码rn[code=Java]rnpublic class Clientrnrn rn public static void main(String args[])rn rn tryrn rn Socket s = new Socket("172.10.10.88", 3228);rn s.getOutputStream().write("abc".getBytes());rn // 用于获取服务端传输来的信息rn BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));rn // 发送客户端准备传输的信息rn PrintWriter pw = new PrintWriter(s.getOutputStream(), true);rn String inStr = null;rn while (true)rn rn tryrn rn inStr = br.readLine();rn if ("exit".equals(inStr))rn rn pw.close();rn br.close();rn break;rn rn else if (null != inStr)rn rn System.out.println(inStr);rn rn rn catch (Exception e)rn rn pw = null;rn br = null;rn throw new RuntimeException(e);rn rn rn s.close();rn rn rn catch (Exception e)rn rn e.printStackTrace();rn rn rnrn[/code]rnrnrnc 服务端代码rn[code=C/C++]rn#include rn#include rn#include rn#include rn#include rnrn#define PORT 3228rnint main(void)rnrnrn int server_sockfd;rn printf("创建socket\n");rn server_sockfd = socket(AF_INET, SOCK_STREAM, 0);rn if (server_sockfd == -1)rn rn printf("socket create failed!");rn exit(1);rn rn struct sockaddr_in server;rn server.sin_family = AF_INET;rn server.sin_port = htons(PORT);rn server.sin_addr.s_addr = INADDR_ANY;rn printf("绑定socket\n");rn bzero(&(server.sin_zero), 8);rn int b;rn b = bind(server_sockfd, (struct sockaddr *) &server, sizeof(struct sockaddr));rn if (b == -1)rn rn printf("bind error");rn exit(1);rn rn int l;rn printf("监听socket\n");rn l = listen(server_sockfd, 10);rn if (l == -1)rn rn printf("listen error");rn exit(1);rn rn while (1)rn rn int client_sockfd;rn struct sockaddr_in client;rn int sasize = sizeof(struct sockaddr);rn printf("开始阻塞socket\n");rn client_sockfd = accept(server_sockfd, (struct sockaddr *) &client, &sasize);rn if (client_sockfd == -1)rn rn printf("accept error");rn continue;rn rn if (fork() > 0)rn rn printf("success\n");rn //printf("Received a connection from %s\n", (char *) inet_ntoa(client.sin_addr));rn char * ch;rn recv(client_sockfd, ch, 100, 0);rn printf("%s\n", ch);rnrn char * exit = "exit";rn send(client_sockfd, exit, strlen(exit), 0);rn rn rn return 0;rnrn[/code]rnrn他们能链接上,好像传输流有问题 过不去也回不来。。rnrnrnrn谢谢大侠们细心相助,,小弟刚学c语言不久。
Socket笔记之客户端Socket
文章目录TCP与UDP套接字客户端Socket关闭Socket异常Socket选项缓冲区TCP_NODELAYSO_LINGER服务类型设定连接时间、延迟和带宽的相对重要性 TCP与UDP TCP:传输控制协议。TCP是面向连接的通信协议,TCP提供两台计算机之间的可靠无差错的数据传输 UDP:用户数据报协议。UDP是无连接通信,不保证可靠数据的传输,但能够向若干个目标传输数据,接收来自若干个...
Socket之客户端Socket
Socket在网络编程中有着举足轻重的位置,这边文章主要讲解客户端Socket的常规使用,带你入门Socket
怎么验证接收到的socket是合法客户端的socket
我用的是C#,不知道怎么判断接收到的socket是否我的客户的socketrn我也想过,约定先发送一个验证号,确定了,之后才是数据发送rn但是这样,每次接收数据都要判断一次该socket是否已经验证。。。rn如此很麻烦。。。rn
如何让服务器的SOCKET知道客户端的Socket已经close
如何让服务器的SOCKET知道客户端的Socket已经close。rn比如客户机突然断电
socket开发出现问题:服务器如何转发给不同客户端的消息?
贴出部分代码:rn1:启动按纽rnprivate void btnStart_Click(object sender, System.EventArgs e)rn rn tryrn rn tcpListener = new TcpListener(IPAddress.Parse(this.dropHost.Text),int.Parse(this.txtPort.Text));rn tcpListener.Start();rn this.txtContent.Text="服务器已经启动,正在监听"+this.dropHost.Text+":"+this.txtPort.Text+"端口。";rn Th=new Thread(new ThreadStart(this.StartListen));rn Th.Start();rn this.btnStart.Enabled=false;rn rn catch(Exception excp)rn rn this.txtContent.Text=excp.Message.ToString();rn rn rnrn2:开始监听rnprivate void StartListen()rn rn while(true)rn rn tcpClient = tcpListener.AcceptTcpClient();rn if(curUsers>=MaxUsrCount)rn rn tcpClient.Close();rn rn elsern rn Thread EDT=new Thread(new ThreadStart(this.ExchangeData));rn EDT.Start();rn rn rn rn执行ExchangData方法:rnprivate void ExchangeData()rn rn string tempMessage = "";rn int Len = 0;rn byte[] Buff = new byte[1024];rn tryrn rn netStrm=tcpClient.GetStream();//每当有新的Socket产生的时候,便会执行rn while(true)rn rn if(!netStrm.CanRead)rn break;rn Len=netStrm.Read(Buff,0,Buff.Length);rn tempMessage=System.Text.UnicodeEncoding.Unicode.GetString(Buff,0,Len);rn MessageInfo mess = new MessageInfo();rn this.SetMessage(tempMessage,mess);rn switch(mess.MessType)rn rn case "Add":rn #region Addrn rn #endregionrn default:rn txtContent.Text = "执行了default条件"+"\r\n"+txtContent.Text;rn break;rn rn rn //netStrms[CurNum].Close();rn //tcpClients[CurNum].Close();rn rn catch(Exception e)rn rn this.txtContent.Text=e.ToString()+"\r\n"+this.txtContent.Text;rn rn rn我的思路是:rn每当有客户端连接时,都会发生一个netStrm,然后把它放在一个ArrayList数组里面,如:rna客户端连接时,发生一个netStrm_a,b客户连接时,产生一个netStrm_b,然后放在arraylist当中。rn当服务器要给a发送消息时,则通过netStrm_a来发送,要给b发送消息时,则通过netStrm_b来发送。rnrnbug:rn现在,当多客户端启动时,只有最后一个启动的用户能给服务器发送消息,并且服务器也能给相应的客户端转发消息。但先前启动的客户端就不能给服务器关送了(严格来讲,先前启动的客户端也能发,只是服务器不能接收而起)。rnrn原因:看我的ExchangeData()方法,while(true)里面的一句代码:rnLen=netStrm.Read(Buff,0,Buff.Length);//netStrm很有可能就是最后一次启动的NetworkStream对像。只有它才能读!所以,现在的问题是:如何修改这一句代码。如何让服务器端不同的netStrm来接受相应客户端的消息呢??rnrn还有一个问题是:我什么时候关闭服务器的socket?rn谢谢各位!rn
基于java的socket客户端
基于java的socket开发,简单的客户端程序,可向服务器发送和接受请求,并能保存成文件。
java socket服务端和客户端
java版的socket,包含的服务端和客户端,实现两者连接和数据通讯
JAVA 网络编程socket客户端
JAVA 网络编程socket客户端,跟server端通信的比较好的client例程
java socket 客户端和服务端
这个小程序是我自己一手一脚写出来的,经个人测试可以运行!并且里面附有很详细的解释!详细看了我代码的都会了解什么是java socket!并对初学者和具有一点水平的人很有启发!
java多路复用socket客户端.
使用socket channel 连接服务器,断线重连,发送保活等的封装类。 Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道。可以通过以下2种方式创建SocketChannel: 打开一个SocketChannel并连接到互联网上的某台服务器。 一个新连接到达ServerSocketChannel时,会创建一个SocketChannel。
Java网络编程 客户端Socket
使用SocketSocket是两台主机之间的一个连接。它可以完成7个基本操作: 连接远程机器 发送数据 接受数据 关闭连接 绑定端口 监听入站数据 在绑定端口上接受来自远程机器的连接 Java的Socket类(客户端和服务端都可以使用)提供了前4个操作的方法。后面3个操作仅服务器需要,即等待客户端的连接,这些操作由ServerSocket类实现。Socket的基本方法基本构造函数Socket构造函数
java socket聊天客户端
public class Clien { private static Socket socket; public static void main(String[] args) { try { connect(); } catch (IOEx...
java网络编程-客户端Socket
使用Socket Socket是两台主机之间的一个连接: 基本操作 连接远程机器 发送数据 接收数据 关闭连接 绑定端口 监听入站数据 在绑定端口上接收来自远程机器的连接 java使用客户端Socket的方式: 用构造函数创建一个新的Socket Socket尝试连接远程主机 当建立连接,本地与远程主机就从Socket得到输入输出流并相互发送数据(全双工),当数据传输结束后一...
java socket 客户端代码
Java 基于socket聊天室客户端的代码
java编写的SOCKET客户端
这个软件可以任意设置目标IP和端口实现连接相应的主机服务器,编写语言为java,安装时候需要有相应的java环境运行。
C# socket客户端, java socket 服务器端
我想写个C#socket客户端, java socket 服务器端的例子,不知道怎么写rn还请大家帮忙啊
求socket监听50W客户端的解决方案
首先我先问下.我监听客户端(几十万硬件)发来的数据,我直接用C#写一个exe在服务器上运行 这样合理吗?rnrnrn如果合理 那看下代码(不考虑服务器的配置) 这样做会不会有问题 客户端就不写了 因为是硬件 我也没有 暂时是模拟的 所以 只看服务端的东西rnrnrn[code=csharp]rn /// rn /// 负责监听 客户端段 连接请求的 套接字rn /// rn Socket sokWatch = null;rn /// rn /// 负责 调用套接字, 执行 监听请求的线程rn /// rn Thread threadWatch = null;rnrn //开启监听 按钮rn private void btnStartListen_Click(object sender, EventArgs e)rn rn //实例化 套接字 (ip4寻址协议,流式传输,TCP协议)rn sokWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);rn //创建网络节点对象 包含 ip和portrn IPEndPoint endpoint = new IPEndPoint(IPAddress.Parse(txtIP.Text.Trim()), int.Parse(txtPort.Text.Trim()));rn //将 监听套接字 绑定到 对应的IP和端口rn sokWatch.Bind(endpoint);rn //设置 监听队列 长度为10(同时能够处理 10个连接请求)rn sokWatch.Listen(10);rn threadWatch = new Thread(StartWatch);rn threadWatch.IsBackground = true;rn threadWatch.Start();rn rn[/code]rnrn其中 StartWatch方法 是有客户端连接的时候 执行的操作(比如把连接放到集合里)rnrn然后 每次有客户端发送消息的时候 一下代码在另外一个cs里rnrnrn [code=csharp]rnthis.threadMsg = new Thread(RecMsg);rnthis.threadMsg.IsBackground = true;rnthis.threadMsg.Start();rnvoid RecMsg()rnrn while (isRec)rn rn //这里面 是接收byte[] 然后 我解析之后 insert 到数据库里了rn rnrn[/code]rnrnrn我自己测试100客户端 同时上传数据 目前来看 是没什么问题..rnrn但是 客户端(硬件)不仅仅是这么多 几十万 几百万 都有可能..rnrn所以 我这样的设计 合理吗? 如果不合理,会产生什么问题?
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数